Répétez apres moi :J'aime PBAdonf. J'aime PBAdonf. J'aime PBAdonf.

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.
  • Index
  •  » Powerscripts
  •  » [RESOLU] Le nom de l'utilisateur Windows courant (nom de la session)

#1 19-04-2011 07:33:21

bo10ka  
Membre
Date d'inscription: 14-04-2011
Messages: 14
Pépites: 50
Banque: 0

[RESOLU] Le nom de l'utilisateur Windows courant (nom de la session)

Bonjour cher tous,
Il y a-t-il un script Pb qui permet de savoir le nom de la session Windows courante ou le nom de l'utilisateur connecté?

Merci d'avance

Dernière modification par bo10ka (13-05-2011 08:58:10)

Hors ligne

 

#2 19-04-2011 08:43:50

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: [RESOLU] Le nom de l'utilisateur Windows courant (nom de la session)

Bonjour, il faut passer par l'API windows : http://www.rgagnon.com/pbdetails/pb-0002.html

Code: pb

//You need to declare two API calls.

FUNCTION long GetComputerNameA (ref string ComputerName, ref ulong BufferLength)   LIBRARY "KERNEL32.DLL"
FUNCTION long GetUserNameA(ref string UserName, ref ulong BufferLength) LIBRARY "ADVAPI32.DLL"

// and then

long ll_ret
string ls_ComputerName, ls_UserName
ulong BufferLength = 250  // you may need to adjust this. see Note

ls_ComputerName = Space(BufferLength)
ls_UserName     = Space(BufferLength)

ll_ret = GetComputerNameA(ls_ComputerName, BufferLength)
ll_ret = GetUserNameA(ls_UserName, BufferLength)

N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#3 19-04-2011 09:00:01

bo10ka  
Membre
Date d'inscription: 14-04-2011
Messages: 14
Pépites: 50
Banque: 0

Re: [RESOLU] Le nom de l'utilisateur Windows courant (nom de la session)

Merci Admin,
je vais essayé je te dit quoi!

Hors ligne

 

#4 13-05-2011 08:55:48

bo10ka  
Membre
Date d'inscription: 14-04-2011
Messages: 14
Pépites: 50
Banque: 0

Re: [RESOLU] Le nom de l'utilisateur Windows courant (nom de la session)

ça marche avec ce code :

Code: pb

long ll_id
ContextKeyword lcxk_base
string ls_Path
string ls_values[]

lcxk_base = create ContextKeyword

this.GetContextService("Keyword", lcxk_base)
lcxk_base.GetContextKeywords("USERNAME", ls_values)
if Upperbound(ls_values) > 0 THEN
    ls_Path = ls_values[1]
end if
user = create nvo_user
user.is_username = ls_Path

//Passage des valeurs de connexion récuperée aux propriétés de l'objet SQLCA
SQLCA.DBMS = "ODBC"
SQLCA.DBParm = "ConnectString='DSN=SIRH;DelimitIdentifier='No',MsgTerse='Yes',CallEscape=''"
SQLCA.AutoCommit = true

Connect using SQLCA;

If SQLCA.SQLCode <> 0 Then
  MessageBox ("Erreur Base de données, Veuillez contacter l'admin", SQLCA.SQLErrText )
End If

open(w_mdi)

Dernière modification par bo10ka (13-05-2011 08:56:45)

Hors ligne

 

#5 22-05-2013 14:51:48

infopower  
Membre Power Geek
Lieu: paris
Date d'inscription: 13-04-2011
Messages: 213
Pépites: 1,060
Banque: 0

Re: [RESOLU] Le nom de l'utilisateur Windows courant (nom de la session)

J'ai une petite question
pourquoi vous avez utiliser la fonction "Space" dans votre script.


la vie est une course et il faut avoir un bon depart

Hors ligne

 

#6 22-05-2013 15:10:37

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2486
Pépites: 85
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Le nom de l'utilisateur Windows courant (nom de la session)

Pour forcer la taille des variables passées en référence aux API.
Sinon, il y aura plantage à l'exécution de celles-ci car la mémoire n'aura pas été correctement allouée.
(référence = pointer)


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#7 26-05-2013 12:23:13

seki  
0x73656B69
Award: bf
Lieu: Laquenexy & Luxembourg
Date d'inscription: 20-11-2008
Messages: 1118
Pépites: 4,296,080,204
Banque: 9,223,372,036,854,776,000
Site web

Re: [RESOLU] Le nom de l'utilisateur Windows courant (nom de la session)

Remarque en passant : je sais que PB existe depuis longtemps et qu'on réutilise (ou qu'on se refile sur le forum) des bouts de code qui existent depuis longtemps, mais dans la mesure du possible pour les PB >= 10 il faut utiliser les versions unicode des fonctions de l'API Windows :
- utiliser la version "W" au lieu de la version "A", par exemple GetComputerNameW au lieu de GetComputerNameA (quand les 2 versions existent c'est indiqué en bas de la page de doc chez krosoft, avec la version du système à partir de laquelle c'est dispo, et par quelle dll c'est fourni)
- enlever les ";ansi" dans les alias de déclaration des external
- du coup ça simplifie les calculs d'allocation d'espace, surtout que si on utilise Space() dans un PB récent ça alloue en fait des caractères unicodes, soit 2 octets par caractère, pour être compatible avec les wchart_t attendus par l'API (alors que si on veut allouer des octets à la manière du malloc() du C, on peut utiliser SpaceA() qui retourne des caractères classiques avec 1 octet par caractère)


The best programs are the ones written when the programmer is supposed to be working on something else. - Melinda Varian

Mes réponses PB sur StackOverflow
http://stackoverflow.com/users/flair/317266.png

Hors ligne

 
  • Index
  •  » Powerscripts
  •  » [RESOLU] Le nom de l'utilisateur Windows courant (nom de la session)

Pied de page des forums

Propulsé par FluxBB 1.2.22