Nom de l'ordinateurSalut jmpers,
J'ai besoin de créer une application dans jmp pour différents utilisateurs, ce qui signifie que différents utilisateurs auront une interface utilisateur différente. (c'est la même application) Je me demandais s'il y avait un moyen d'obtenir un profil d'utilisateur ? Disons le nom de l'ordinateur, le nom d'utilisateur ou le nom du serveur de jmp ? Ce faisant, je peux décider quel script ouvrir
réservoirs
pnielRe : nom de l'ordinateurPour MacOS
Essaye ça:
If( Host is( "Mac" ),username=Get Environment Variable( "USER" );
stamp="Test "||username||", "||char(today());
);
Re : nom de l'ordinateurGénial! merciRe : nom de l'ordinateurVous pouvez utiliser une boucle For(), ou vous pouvez faire quelque chose comme ci-dessous :
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 : nom de l'ordinateurCela fonctionne. Mais que se passe-t-il si j'ai 10 lignes et que je veux avoir uname dans toutes les lignes ?
Dois-je utiliser une boucle for ?
Re : nom de l'ordinateurVous devez indiquer à JMP la ligne du tableau de données pour la colonne Utilisateur dans laquelle vous souhaitez enregistrer la valeur.
uname = Get Environment Variable( "COMPUTERNAME" );
dt:user[1] = uname;
Ce qui précède enregistrerait la valeur de "uname" dans la valeur de la ligne 1 pour la colonne "user"
Re : nom de l'ordinateurJ'ai besoin d'obtenir le nom d'utilisateur de l'ordinateur et de le stocker dans une colonne d'une table de données. J'utilise le script suivant -
uname = Obtenir la variable d'environnement( "NOMORDINATEUR" );
dt:user = uname;
où dt est la table de données et user est le nom de la colonne.
Mais j'obtiens l'erreur suivante -
"Impossible de définir la valeur de la colonne 'utilisateur' car le numéro de ligne (-1) n'est pas valide."
Quelqu'un peut-il me dire ce qui ne va pas ici?
Re : nom de l'ordinateur<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />merci, la syntaxe dans JMP12 est en fait :
Obtenir la variable d'environnement("Nom de l'ordinateur");
Re : nom de l'ordinateurJ'ai besoin de quelque chose qui ne peut pas être piraté par quelque chose d'aussi simple que de définir la variable d'environnement.Merci JohnP pour les deux solutions!
Re : nom de l'ordinateurJMP 10 prend directement en charge cette requête
Obtenir la variable d'environnement ("Nom de l'ordinateur")
Meilleur,
-Mat
Re : nom de l'ordinateurLe message d'origine posait également des questions sur le nom de l'ordinateur. Pour obtenir le nom de l'ordinateur, utilisez Kernel32.dll et le nom de la méthode, GetComputerNameA(). Il ressemblera donc à ceci :
dll = Charger la DLL ( "Kernel32.dll" );
dll << FonctionDeclare(
"ObtenirNomOrdinateurA",
Convention( STDCALL ),
Alias ( "Obtenir le nom de l'ordinateur" ),
Arg ( AnsiString, "Nom de l'ordinateur" , sortir ),
Arg (UInt64, "longueur" , mise à jour ),
Renvoie (UInt32)
);
nom = " " ;
unlen = longueur (nom);
result = dll << GetComputerName(name, unlen);
montrer (nom);
dll << DéchargerDLL();
JeanP
Re : nom de l'ordinateurJeanP,
Merci beaucoup!C'est exactement ce que je recherche.Je ne peux pas marquer cela comme la bonne réponse car je n'ai pas commencé ce fil.
Re : nom de l'ordinateurVoici quelques JSL que j'ai écrits pour obtenir le nom d'utilisateur du système. Cela a fonctionné dans JMP 10, fonctionnant sous Windows 7.
dll = Charger la DLL ( "mpr.dll" );
dll << FonctionDeclare(
"WNetGetUserA",
Convention( STDCALL ),
Alias ( "GetUserName" ),
Arg (UInt8, "format" , saisir ),
Arg ( AnsiString, "nom d'utilisateur" , sortir ),
Arg (UInt64, "longueur" , mise à jour ),
Renvoie (UInt32)
);
nom d'utilisateur = " " ;
unlen = longueur (nom d'utilisateur);
résultat = dll << GetUserName( 0 , nom d'utilisateur, unlen);
montrer (nom d'utilisateur);
dll << DéchargerDLL();
Tout d'abord, vous devez charger la DLL système. Je n'ai pas eu de chance avec Advapi32.dll. Mais j'ai trouvé ce dont j'avais besoin avec mpr.dll. Notez que je n'ai pas eu besoin de spécifier un chemin d'accès à la DLL puisqu'il se trouvait sur mon chemin système.
dll = Charger la DLL ("mpr.dll");
Ensuite, vous devez déclarer toute méthode que vous allez appeler dans la DLL. La méthode que je veux utiliser s'appelle en fait WNetGetUserA(), mais en définissant un alias, je peux simplement l'appeler en utilisant GetUserName().
dll << FonctionDeclare(
"WNetGetUserA" ,
Convention( STDCALL ),
Alias ( "GetUserName" ),
Arg (UInt8, "format" , saisir ),
Arg ( AnsiString, "nom d'utilisateur" , sortir ),
Arg (UInt64, "longueur" , mise à jour ),
Renvoie (UInt32)
);
Maintenant, je veux définir les variables que je vais passer en arguments. Je crée un nom d'utilisateur et l'initialise avec des blancs. Ensuite, j'utilise la fonction length() dans JMP pour obtenir la longueur actuelle du tampon que je viens de créer.
nom d'utilisateur = " " ;
unlen = longueur (nom d'utilisateur);
Maintenant, je peux appeler la fonction. Notez que le premier argument est une entrée uniquement, donc j'utilise simplement une constante au lieu de définir une variable. Ensuite, la commande show() affiche mon nom d'utilisateur après avoir passé l'appel.
résultat = dll << GetUserName( 0 , nom d'utilisateur, unlen);
montrer (nom d'utilisateur);
Enfin, j'ai fini donc je nettoie.
dll << DéchargerDLL();
J'espère que cela fonctionne pour vous. Si vous trouvez une meilleure méthode, veuillez nous en informer.
Soit dit en passant, l'utilisation de loadDLL ne fonctionne que sous Windows. Il n'est pas pris en charge sur le Mac. Pour cette raison, je fais une vérification en haut de mon script.
Noms par défaut ici ( 1 );
Si ( L'hôte est ( Mac ),
Imprimer ( "Désolé, ce script n'est pas pris en charge sur Mac." );
Arrêt ();
);
Apprécier,
JeanP
Re : nom de l'ordinateurQuelqu'un peut-il m'aider avec la syntaxe pour appeler une DLL ?Je souhaite obtenir le nom d'utilisateur de l'utilisateur à l'aide de la fonction GetUserName de l'API Windows.Je ne veux pas rechercher la variable d'environnement username car elle peut être usurpée.
Advapi32.dll
BOOL WINAPI GetNomUtilisateur(
_Out_ LPTSTR lpBuffer,
_Inout_ LPDWORD lpnSize
);
Merci!
Re : nom de l'ordinateurSalut:
En supposant que Windows XP et JMP 8 permettent de récupérer les variables Windoz via la commande LoadDLL - (également avec JMP 9 si l'on souhaite récupérer toutes les variables ENV).
L'exemple ci-dessous utilise la fonction de fenêtre "GetEnvironmentStrings" pour récupérer toutes les variables d'environnement globales (y compris COMPUTERNAME) et pour les chargements amusants, puis dans une table de données et un tableau.
voir:
http://www.nesug.org/Proceedings/nesug10/ad/ad04.pdf
Cordialement,
-Mat
Re : nom de l'ordinateurSalut,
j'utilise jmp 8 existe-t-il une fonction similaire qui récupère le nom de l'ordinateur
réservoirsRe : nom de l'ordinateurSalut Pneil :
Sur Windose, depuis le menu démarrer, exécutez, cmd ouvre une fenêtre DOS. À partir de l'invite, tapez "set" pour obtenir la liste des variables d'environnement actives.
Aussi - faites un clic droit sur l'icône Mon ordinateur sur le bureau - sélectionnez le bouton des variables d'environnement de l'onglet Avancé près du bas.
JMP 9 inclut la fonction pratique permettant de récupérer l'un de ces éléments dans l'environnement :
cname = Obtenir la variable d'environnement( "NOMORDINATEUR" );
et on peut créer une branche en conséquence en fonction de la valeur renvoyée à partir de là.
Cordialement,
-MatRe : nom de l'ordinateurCela a fonctionné pour moi pour obtenir le nom d'utilisateur actuel sous Windows :
uname = Get Environment Variable( "USERNAME" );
Re: nom de l'ordinateurmerci beaucoup:)
Quelqu'un peut-il marquer la réponse de @bswedlove comme une solution.