nombre de la computadoraHola jmpers,
Necesito crear una aplicación en jmp para diferentes usuarios, lo que significa que diferentes usuarios tendrán una interfaz de usuario diferente. (es la misma aplicación) Me preguntaba si hay alguna forma de obtener el perfil de usuario. Digamos el nombre de la computadora, el nombre de usuario o el nombre del servidor de jmp. Al hacerlo, puedo decidir qué script abrir.
tanques
panielRe: nombre de la computadoraPara sistema operativo Mac
Prueba esto:
If( Host is( "Mac" ),username=Get Environment Variable( "USER" );
stamp="Test "||username||", "||char(today());
);
Re: nombre de la computadora¡Impresionante! graciasRe: nombre de la computadoraPuede usar un For() Loop, o puede hacer algo como lo siguiente:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Consumer Preferences.jmp" );
uname = Get Environment Variable( "COMPUTERNAME" );
dt << New Column( "User", character, set each value( uname ) );
Re: nombre de la computadoraFunciona. Pero, ¿qué pasa si tengo 10 filas y quiero tener un nombre en todas las filas?
¿Uso un bucle for?
Re: nombre de la computadoraDebe decirle a JMP en qué fila de la tabla de datos para la columna Usuario desea guardar el valor.
uname = Get Environment Variable( "COMPUTERNAME" );
dt:user[1] = uname;
Lo anterior guardaría el valor de "uname" en el valor de la fila 1 para la columna "usuario"
Re: nombre de la computadoraNecesito obtener el nombre de usuario de la computadora y almacenarlo en una columna de una tabla de datos. Estoy usando el siguiente script:
uname = Obtener variable de entorno ("COMPUTERNAME");
dt:usuario = uname;
donde dt es la tabla de datos y usuario es el nombre de la columna.
Pero me sale el siguiente error -
"No se puede establecer el valor para la columna 'usuario' porque el número de fila (-1) no es válido".
¿Alguien puede decirme qué está mal aquí?
Re: nombre de la computadora<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />gracias, la sintaxis en JMP12 es en realidad:
Obtener variable de entorno ("Nombre de la computadora");
Re: nombre de la computadoraNecesito algo que no pueda ser pirateado por algo tan simple como configurar la variable de entorno.¡Gracias JohnP por ambas soluciones!
Re: nombre de la computadoraJMP 10 admite esta consulta directamente
Obtener variable ambiental ("Nombre de la computadora")
Mejor,
-Mate
Re: nombre de la computadoraLa publicación original también preguntaba sobre el nombre de la computadora. Para obtener el nombre de la computadora, use Kernel32.dll y el nombre del método, GetComputerNameA(). Entonces se verá así:
dll = Cargar DLL ( "Kernel32.dll" );
dll << DeclararFunción(
"ObtenerNombreDeEquipoA",
Convención (STDCALL),
Alias ( "ObtenerNombreDeEquipo" ),
Argentina (AnsiString, "nombre de la computadora" , producción ),
Argentina (UInt64, "longitud" , actualizar ),
Devoluciones (UInt32)
);
nombre = " " ;
unlen = longitud (nombre);
resultado = dll << GetComputerName(name, unlen);
espectáculo (nombre);
dll << DescargarDLL();
JuanP
Re: nombre de la computadoraJuan P,
¡Muchas gracias!Eso es exactamente lo que estoy buscando.No puedo marcar esto como la respuesta correcta porque no comencé este hilo.
Re: nombre de la computadoraAquí hay algunos JSL que escribí para obtener el nombre de usuario del sistema. Esto funcionó en JMP 10, ejecutándose en Windows 7.
dll = Cargar DLL ( "mpr.dll" );
dll << DeclararFunción(
"WNetGetUserA",
Convención (STDCALL),
Alias ( "Obtener nombre de usuario" ),
Argentina (UInt8, "formato" , aporte ),
Argentina (AnsiString, "nombre de usuario" , producción ),
Argentina (UInt64, "longitud" , actualizar ),
Devoluciones (UInt32)
);
nombre de usuario = " " ;
unlen = longitud (nombre de usuario);
resultado = dll << ObtenerNombreUsuario( 0 , nombre de usuario, unlen);
espectáculo (nombre de usuario);
dll << DescargarDLL();
Primero, debe cargar la DLL del sistema. No tuve suerte con Advapi32.dll. Pero encontré lo que necesitaba con mpr.dll. Tenga en cuenta que no necesitaba especificar una ruta a la DLL ya que estaba en la ruta de mi sistema.
dll = Cargar DLL ("mpr.dll");
A continuación, debe declarar cualquier método al que vaya a llamar en la DLL. El método que quiero usar en realidad se llama WNetGetUserA(), pero al definir un alias, puedo simplemente llamarlo usando GetUserName().
dll << DeclararFunción(
"WNetGetUserA" ,
Convención (STDCALL),
Alias ( "Obtener nombre de usuario" ),
Argentina (UInt8, "formato" , aporte ),
Argentina (AnsiString, "nombre de usuario" , producción ),
Argentina (UInt64, "longitud" , actualizar ),
Devoluciones (UInt32)
);
Ahora quiero definir las variables que voy a pasar como argumentos. Creo un nombre de usuario y lo inicializo en espacios en blanco. Luego uso la función length() en JMP para obtener la longitud actual del búfer que acabo de crear.
nombre de usuario = " " ;
unlen = longitud (nombre de usuario);
Ahora puedo llamar a la función. Observe que el primer argumento es solo de entrada, por lo que solo uso una constante en lugar de definir una variable. Luego, el comando show () muestra mi nombre de usuario después de realizar la llamada.
resultado = dll << ObtenerNombreUsuario( 0 , nombre de usuario, unlen);
espectáculo (nombre de usuario);
Finalmente, he terminado, así que limpio.
dll << DescargarDLL();
Espero que esto funcione para ti. Si se te ocurre una forma mejor, háznoslo saber.
Por cierto, usar loadDLL solo funciona en Windows. No es compatible con Mac. Por esa razón, hago una verificación en la parte superior de mi script.
Nombres predeterminados hasta aquí ( 1 );
Si ( El anfitrión es ( Mac ),
Imprimir ( "Lo sentimos, esta secuencia de comandos no es compatible con Mac". );
Detener ();
);
Disfrutar,
JuanP
Re: nombre de la computadora¿Puede alguien ayudarme con la sintaxis para llamar a una DLL?Quiero obtener el nombre de usuario del usuario mediante la función GetUserName de la API de Windows.No quiero buscar la variable de entorno del nombre de usuario porque se puede falsificar.
Advapi32.dll
BOOL WINAPI ObtenerNombreUsuario(
_Salida_ LPTSTR lpBuffer,
_Entrada_ LPDWORD lpnSize
);
¡Gracias!
Re: nombre de la computadoraHola:
Suponiendo que Windows XP y JMP 8 se pueden recuperar las variables de Windoz a través del comando LoadDLL (también con JMP 9 si se quiere recuperar todas las variables ENV).
El siguiente ejemplo utiliza la función de Windows "GetEnvironmentStrings" para recuperar todas las variables ambientales globales (incluido COMPUTERNAME) y, por diversión, las carga en una tabla de datos y una matriz.
ver:
http://www.nesug.org/Proceedings/nesug10/ad/ad04.pdf
Atentamente,
-Mate
Re: nombre de la computadoraHola,
estoy usando jmp 8, ¿hay una función similar que recupere el nombre de la computadora?
tanquesRe: nombre de la computadoraHola Pneil:
En Windose, desde el menú de inicio, ejecutar, cmd abre una ventana de DOS. Desde el indicador, escriba "set" para la lista de variables ambientales activas.
Además, haga clic con el botón derecho en el ícono Mi PC en el escritorio, seleccione el botón de variables ambientales de la pestaña Avanzado cerca de la parte inferior.
JMP 9 incluye la práctica función para recuperar cualquiera de estos del entorno:
cname = Obtener variable de entorno ("COMPUTERNAME");
y uno puede bifurcarse en consecuencia en función del valor devuelto desde allí.
Atentamente,
-MateRe: nombre de la computadoraEsto funcionó para mí para obtener el nombre de usuario actual en Windows:
uname = Get Environment Variable( "USERNAME" );
Re: nombre de la computadoraMuchas gracias:)
¿Alguien puede marcar la respuesta de @bswedlove como solución?