nome del computerCiao jmpers,
Devo creare un'applicazione in jmp per utenti diversi, il che significa che utenti diversi avranno un'interfaccia utente diversa. (è la stessa applicazione) Mi chiedevo se c'è un modo per ottenere il profilo utente? Diciamo nome computer, nome utente o nome server da jmp? Così facendo posso decidere quale script aprire
Carri armati
pnielRe: nome del computerPer sistema operativo Mac
Prova questo:
If( Host is( "Mac" ),username=Get Environment Variable( "USER" );
stamp="Test "||username||", "||char(today());
);
Re: nome del computerEccezionale! GrazieRe: nome del computerPuoi usare un ciclo For() oppure puoi fare qualcosa di simile al seguente:
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: nome del computerFunziona. Ma cosa succede se ho 10 righe e voglio avere uname in tutte le righe?
Uso un ciclo for?
Re: nome del computerDevi indicare a JMP in quale riga della tabella dati per la colonna Utente desideri salvare il valore.
uname = Get Environment Variable( "COMPUTERNAME" );
dt:user[1] = uname;
Quanto sopra salverebbe il valore di "uname" nel valore della riga 1 per la colonna "utente"
Re: nome del computerDevo ottenere il nome utente del computer e memorizzarlo in una colonna di un datatable. Sto usando il seguente script:
uname = Ottieni variabile d'ambiente( "NOMECOMPUTER" );
dt:utente = uname;
dove dt è la tabella dati e user è il nome della colonna.
Ma ottengo il seguente errore:
"Impossibile impostare il valore per la colonna 'utente' perché il numero di riga (-1) non è valido."
Qualcuno può dirmi cosa c'è che non va qui?
Re: nome del computer<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />grazie, la sintassi in JMP12 è in realtà:
Ottieni variabile d'ambiente ("Nome computer");
Re: nome del computerHo bisogno di qualcosa che non possa essere violato da qualcosa di semplice come impostare la variabile d'ambiente.Grazie JohnP per entrambe le soluzioni!
Re: nome del computerJMP 10 supporta direttamente questa query
Ottieni variabile d'ambiente ("Nome computer")
Migliore,
-Opaco
Re: nome del computerIl post originale chiedeva anche il nome del computer. Per ottenere il nome del computer, utilizzare Kernel32.dll e il nome del metodo, GetComputerNameA(). Quindi sarà simile a questo:
dll = Carica DLL ( "Kernel32.dll" );
dll <
"OttieniNomeComputerA",
Convenzione( STDCALL ),
Alias ( "OttieniNomeComputer" ),
Arg ( AnsiString, "nome del computer" , produzione ),
Arg (UInt64, "lunghezza" , aggiornamento ),
Restituisce( UInt32 )
);
nome = " " ;
unlen = lunghezza (nome);
risultato = dll << GetComputerName(nome, unlen);
spettacolo (nome);
dll << ScaricaDLL();
Giovanni P
Re: nome del computerGiovanniP,
Grazie mille!È proprio quello che sto cercando.Non posso contrassegnare questa come risposta corretta perché non ho iniziato io questa discussione.
Re: nome del computerEcco alcuni JSL che ho scritto per ottenere il nome utente dal sistema. Funzionava in JMP 10, in esecuzione su Windows 7.
dll = Carica DLL ( "mpr.dll" );
dll <
"WNetGetUtenteA",
Convenzione( STDCALL ),
Alias ( "OttieniNomeUtente" ),
Arg (UInt8, "formato" , ingresso ),
Arg ( AnsiString, "nome utente" , produzione ),
Arg (UInt64, "lunghezza" , aggiornamento ),
Restituisce( UInt32 )
);
nome utente = " " ;
unlen = lunghezza (nome utente);
risultato = dll << GetUserName( 0 , nome utente, unlen);
spettacolo (nome utente);
dll << ScaricaDLL();
Innanzitutto, è necessario caricare la DLL di sistema. Non ho avuto fortuna con Advapi32.dll. Ma ho trovato quello che mi serviva con mpr.dll. Si noti che non ho bisogno di specificare un percorso per la DLL poiché era nel mio percorso di sistema.
dll = Carica DLL ("mpr.dll");
Successivamente, devi dichiarare qualsiasi metodo che chiamerai nella DLL. Il metodo che voglio usare è in realtà chiamato WNetGetUserA(), ma definendo un alias, posso semplicemente chiamarlo usando GetUserName().
dll <
"WNetGetUtenteA" ,
Convenzione( STDCALL ),
Alias ( "OttieniNomeUtente" ),
Arg (UInt8, "formato" , ingresso ),
Arg ( AnsiString, "nome utente" , produzione ),
Arg (UInt64, "lunghezza" , aggiornamento ),
Restituisce( UInt32 )
);
Ora voglio definire le variabili che passerò come argomenti. Creo un nome utente e lo inizializzo in spazi vuoti. Quindi utilizzo la funzione length() in JMP per ottenere la lunghezza corrente del buffer che ho appena creato.
nome utente = " " ;
unlen = lunghezza (nome utente);
Ora posso chiamare la funzione. Si noti che il primo argomento è solo input, quindi utilizzo solo una costante invece di definire una variabile. Quindi il comando show() mostra il mio nome utente dopo aver effettuato la chiamata.
risultato = dll << GetUserName( 0 , nome utente, unlen);
spettacolo (nome utente);
Alla fine, ho finito, quindi pulisco.
dll << ScaricaDLL();
Spero che questo funzioni per te. Se trovi un modo migliore, faccelo sapere.
A proposito, l'utilizzo di loadDLL funziona solo su Windows. Non è supportato su Mac. Per questo motivo faccio un controllo all'inizio del mio script.
I nomi predefiniti sono qui ( 1 );
Se ( L'ospite è ( Mac ),
Stampa ( "Spiacenti, questo script non è supportato su Mac." );
Fermare ();
);
Godere,
Giovanni P
Re: nome del computerQualcuno può aiutarmi con la sintassi per chiamare una DLL?Voglio ottenere il nome utente dell'utente utilizzando la funzione GetUserName dell'API di Windows.Non voglio cercare la variabile d'ambiente del nome utente perché può essere falsificata.
Advapi32.dll
BOOL WINAPI GetNomeUtente(
_Out_ LPTSTR lpBuffer,
_Inout_ LPDWORD lpnSize
);
Grazie!
Re: nome del computerCIAO:
Supponendo che Windows XP e JMP 8 si possano recuperare le variabili Windoz tramite il comando LoadDLL - (anche con JMP 9 se si desidera recuperare tutte le variabili ENV).
L'esempio seguente utilizza la funzione di Windows "GetEnvironmentStrings" per recuperare tutte le variabili ambientali globali (incluso COMPUTERNAME) e per i carichi divertenti quindi in una tabella di dati e in un array.
Vedere:
http://www.nesug.org/Proceedings/nesug10/ad/ad04.pdf
Distinti saluti,
-Opaco
Re: nome del computerCIAO,
sto usando jmp 8 c'è una funzione simile che recupera il nome del computer
carri armatiRe: nome del computerCiao Pnel:
Su Windose, dal menu start, esegui, cmd apre una finestra DOS. Dal prompt digitare "set" per l'elenco delle variabili ambientali attive.
Inoltre, fai clic con il pulsante destro del mouse sull'icona Risorse del computer sul desktop, seleziona il pulsante Variabili ambientali della scheda Avanzate nella parte inferiore.
JMP 9 include la pratica funzione per recuperare uno qualsiasi di questi dall'ambiente:
cname = Ottieni variabile d'ambiente( "NOMECOMPUTER" );
e si può diramare di conseguenza in base al valore restituito da lì.
Distinti saluti,
-OpacoRi: nome del computerQuesto ha funzionato per me per ottenere il nome utente corrente su Windows:
uname = Get Environment Variable( "USERNAME" );
Re: nome del computergrazie molto 
Qualcuno può contrassegnare la risposta di @bswedlove come soluzione?