ComputernameHallo jmpers,
Ich muss eine Anwendung in jmp für verschiedene Benutzer erstellen, was bedeutet, dass verschiedene Benutzer unterschiedliche Benutzeroberflächen haben. (es ist die gleiche Anwendung) Ich habe mich gefragt, ob es eine Möglichkeit gibt, ein Benutzerprofil zu erhalten? Sagen wir Computername, Benutzername oder Servername von jmp? Dadurch kann ich entscheiden, welches Skript geöffnet werden soll
Panzer
pnielBetreff: ComputernameFür Mac OS
Versuche dies:
If( Host is( "Mac" ),username=Get Environment Variable( "USER" );
stamp="Test "||username||", "||char(today());
);
Betreff: ComputernameEindrucksvoll! DankeBetreff: ComputernameSie können eine For()-Schleife verwenden oder etwas wie das Folgende tun:
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 ) );
Betreff: ComputernameEs funktioniert. Aber was ist, wenn ich 10 Zeilen habe und in allen Zeilen unname haben möchte?
Benutze ich eine for-Schleife?
Betreff: ComputernameSie müssen JMP mitteilen, in welcher Zeile der Datentabelle für die Spalte „Benutzer“ Sie den Wert speichern möchten.
uname = Get Environment Variable( "COMPUTERNAME" );
dt:user[1] = uname;
Das Obige würde den Wert von „uname“ in Zeile 1 für die Spalte „user“ speichern.
Betreff: ComputernameIch muss den Benutzernamen des Computers abrufen und ihn in einer Spalte einer Datentabelle speichern. Ich verwende das folgende Skript:
uname = Umgebungsvariable abrufen( "COMPUTERNAME" );
dt:user = uname;
Dabei ist dt die Datentabelle und user der Name der Spalte.
Aber ich erhalte die folgende Fehlermeldung:
„Der Wert für die Spalte ‚Benutzer‘ kann nicht festgelegt werden, da die Zeilennummer (-1) ungültig ist.“
Kann mir bitte jemand sagen, was hier falsch ist?
Betreff: Computername<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Danke, die Syntax in JMP12 ist eigentlich:
Get Environment Variable("Computername");
Betreff: ComputernameIch brauche etwas, das nicht durch etwas so Einfaches wie das Setzen der Umgebungsvariablen gehackt werden kann.Danke JohnP für beide Lösungen!
Betreff: ComputernameJMP 10 unterstützt diese Abfrage direkt
Umgebungsvariable („Computername“) abrufen
Am besten,
-Matt
Betreff: ComputernameIm ursprünglichen Beitrag wurde auch nach dem Computernamen gefragt. Um den Computernamen zu erhalten, verwenden Sie Kernel32.dll und den Methodennamen GetComputerNameA(). Es wird also so aussehen:
dll = DLL laden ( „Kernel32.dll“ );
dll << DeclareFunction(
„GetComputerNameA“,
Konvention( STDCALL ),
Alias ( „GetComputerName“ ),
Arg (AnsiString, "Computername" , Ausgang ),
Arg ( UInt64, "Länge" , aktualisieren ),
Gibt zurück (UInt32)
);
Name = " " ;
unlen = Länge (Name);
result = dll << GetComputerName(name, unlen);
zeigen (Name);
dll << UnloadDLL();
JohnP
Betreff: ComputernameJohnP,
Vielen Dank!Genau das suche ich.Ich kann dies nicht als die richtige Antwort markieren, da ich diesen Thread nicht gestartet habe.
Betreff: ComputernameHier ist eine JSL, die ich geschrieben habe, um den Benutzernamen vom System abzurufen. Dies funktionierte in JMP 10 unter Windows 7.
dll = DLL laden ( „mpr.dll“ );
dll << DeclareFunction(
„WNetGetUserA“,
Konvention( STDCALL ),
Alias ( „GetUserName“ ),
Arg ( UInt8, "Format" , Eingabe ),
Arg (AnsiString, "Nutzername" , Ausgang ),
Arg ( UInt64, "Länge" , aktualisieren ),
Gibt zurück (UInt32)
);
Benutzername = " " ;
unlen = Länge (Nutzername);
result = dll << GetUserName( 0 , Benutzername, unlen);
zeigen (Nutzername);
dll << UnloadDLL();
Zuerst müssen Sie die System-DLL laden. Mit Advapi32.dll hatte ich kein Glück. Aber ich habe mit mpr.dll gefunden, was ich brauchte. Beachten Sie, dass ich keinen Pfad zur DLL angeben musste, da sie sich auf meinem Systempfad befand.
dll = DLL laden ("mpr.dll");
Als nächstes müssen Sie jede Methode deklarieren, die Sie in der DLL aufrufen möchten. Die Methode, die ich verwenden möchte, heißt eigentlich WNetGetUserA(), aber durch die Definition eines Alias kann ich sie einfach mit GetUserName() aufrufen.
dll << DeclareFunction(
„WNetGetUserA“ ,
Konvention( STDCALL ),
Alias ( „GetUserName“ ),
Arg ( UInt8, "Format" , Eingabe ),
Arg (AnsiString, "Nutzername" , Ausgang ),
Arg ( UInt64, "Länge" , aktualisieren ),
Gibt zurück (UInt32)
);
Jetzt möchte ich die Variablen definieren, die ich als Argumente übergeben werde. Ich erstelle einen Benutzernamen und initialisiere ihn mit Leerzeichen. Dann verwende ich die Funktion length() in JMP, um die aktuelle Länge des Puffers abzurufen, den ich gerade erstellt habe.
Benutzername = " " ;
unlen = Länge (Nutzername);
Jetzt kann ich die Funktion aufrufen. Beachten Sie, dass das erste Argument nur eine Eingabe ist, daher verwende ich einfach eine Konstante, anstatt eine Variable zu definieren. Dann zeigt der Befehl show() meinen Benutzernamen nach dem Anruf an.
result = dll << GetUserName( 0 , Benutzername, unlen);
zeigen (Nutzername);
Endlich bin ich fertig und räume auf.
dll << UnloadDLL();
Ich hoffe, das funktioniert für Sie. Wenn Sie einen besseren Weg finden, lassen Sie es uns bitte wissen.
Die Verwendung von loadDLL funktioniert übrigens nur unter Windows. Es wird auf dem Mac nicht unterstützt. Aus diesem Grund prüfe ich oben in meinem Skript.
Namen standardmäßig hier ( 1 );
Wenn ( Gastgeber ist ( Mac ),
Drucken ( „Leider wird dieses Skript auf dem Mac nicht unterstützt.“ );
Stoppen ();
);
Genießen,
JohnP
Betreff: ComputernameKann mir jemand bei der Syntax zum Aufruf einer DLL helfen?Ich möchte den Benutzernamen des Benutzers mithilfe der GetUserName-Funktion der Windows-API abrufen.Ich möchte die Umgebungsvariable „Benutzername“ nicht nachschlagen, da diese gefälscht werden kann.
Advapi32.dll
BOOL WINAPI GetUserName(
_Out_ LPTSTR lpBuffer,
_Inout_ LPDWORD lpnSize
);
Danke!
Betreff: ComputernameHallo:
Unter Windows XP und JMP 8 kann man Windoz-Variablen über den LoadDLL-Befehl abrufen – (auch mit JMP 9, wenn man alle ENV-Variablen abrufen möchte).
Das folgende Beispiel verwendet die Windows-Funktion „GetEnvironmentStrings“, um alle globalen Umgebungsvariablen (einschließlich COMPUTERNAME) abzurufen und sie dann zum Spaß in eine Datentabelle und ein Array zu laden.
sehen:
http://www.nesug.org/Proceedings/nesug10/ad/ad04.pdf
Mit freundlichen Grüßen,
-Matt
Betreff: ComputernameHi,
Ich verwende JMP 8. Gibt es dort eine ähnliche Funktion, die den Computernamen abruft?
PanzerBetreff: ComputernameHallo Pneil:
Unter Windows führen Sie im Startmenü „Ausführen“ aus, „cmd“ öffnet ein DOS-Fenster. Geben Sie an der Eingabeaufforderung „set“ ein, um die Liste der aktiven Umgebungsvariablen anzuzeigen.
Klicken Sie außerdem mit der rechten Maustaste auf das Symbol „Mein Computer“ auf dem Desktop und wählen Sie unten die Schaltfläche „Umgebungsvariablen“ auf der Registerkarte „Erweitert“ aus.
JMP 9 enthält die praktische Funktion, um diese aus der Umgebung abzurufen:
cname = Umgebungsvariable abrufen( "COMPUTERNAME" );
und man kann basierend auf dem zurückgegebenen Wert von dort aus entsprechend verzweigen.
Mit freundlichen Grüßen,
-MattBetreff: ComputernameBei mir hat es funktioniert, den aktuellen Benutzernamen unter Windows abzurufen:
uname = Get Environment Variable( "USERNAME" );
Betreff: Computernamevielen Dank:)
Kann jemand die Antwort von @bswedlove als Lösung markieren?