Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1730 connectés 

  FORUM HardWare.fr
  Programmation

  [C/C++] GetUsername, les !$%$?% de pointeurs

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C/C++] GetUsername, les !$%$?% de pointeurs

n°16953
Ventilo
Ventilo? Depuis 1998!
Posté le 04-03-2001 à 19:58:28  profilanswer
 

Bon la je suis dans en plein dans un gros probleme...
 
vous voyer j'essaie de savoir quel est le nom de lutilisateur loger (sa se dit?) avec la function GetUserName de l'api de windows. j'ai fait une function toute simple:
 
char* AvoirInfos ()  
{
 char Nom;
 LPDWORD ml;
 
 GetUserName (&Nom,ml);
 
 return &Nom;
}
 
mais sa marche pas.... je compille et je recoi une erreur de lecture/écriture mémoire...je suis sur a 80% que c'est la variable ml qui cause le problem parce que je ne lui donne pas de valeur, mais quand je lui donne la valeur 256 (UNLEN) j'obtine une erreur de converion de types....AU SECOUR  
 
Cela semblait si simple avan! (vive vb)
 
P.S
*:gun:
 :pt1cable:

mood
Publicité
Posté le 04-03-2001 à 19:58:28  profilanswer
 

n°16954
verdoux
And I'm still waiting
Posté le 04-03-2001 à 20:08:19  profilanswer
 

Apparemment t'es passé un peu brutalement de VB au C :)

n°16956
Ventilo
Ventilo? Depuis 1998!
Posté le 04-03-2001 à 20:16:10  profilanswer
 

Effectivement :D
 
mais c'est sourtout l'API de windows qui me tue! :crazy:

n°16964
Ventilo
Ventilo? Depuis 1998!
Posté le 04-03-2001 à 21:54:48  profilanswer
 

Une réponse serait aprécier vous savez!  :D

n°16966
Roswell_
Posté le 04-03-2001 à 22:23:44  profilanswer
 

tu connais msnd?
http://msdn.microsoft.com/library/ [...] /msdn1.htm
 
sinon:
BOOL GetUserName(
  LPTSTR lpBuffer,  // address of name buffer
  LPDWORD nSize     // address of size of name buffer
);
donc moi je ferais:
char* AvoirInfos ()  
{  
char *Nom=(char*)malloc(256*sizeof(char));  
LPDWORD ml=256;  
 
GetUserName (Nom,&ml);  
 
return Nom;  
}


---------------
http://www.cheata.net le site qui vous donne la banane!
n°16970
Ventilo
Ventilo? Depuis 1998!
Posté le 04-03-2001 à 22:50:40  profilanswer
 

Bon merci pour ta tentative d'aide mais ta manière bug,
mais elle a le mérite d'être plus imposante que la mienne :D  
 
bon mais voici les erreurs que j'ai lorsque je compile
 
pour la ligne "LPDWORD ml=256;" j'ai:  
initializing' : cannot convert from 'const int' to 'unsigned long *'
 
et pour "GetUserName (Nom,&ml);" j'ai:
'GetUserNameA' : cannot convert parameter 2 from 'unsigned long ** ' to 'unsigned long *'
 
pour la première erreur j'ai essayer:
LPDWORD ml= LPDWORD(256);
 
et sa ne me donnait pas d'erreur a la compile et pour la deuxième j'ai enlever le "&" tout compilait mais j'avait la même erreur qu'avec ma function a moi...:cry:
 
et pour MSDN je connait sa car c'est là que j'ai trouver la function GetUserName:sarcastic:

 

--Message édité par Ventilo--

n°16971
verdoux
And I'm still waiting
Posté le 04-03-2001 à 23:07:19  profilanswer
 

tu remplaces  
LPDWORD ml=256;
par  
DWORD ml=256;

n°16972
Ventilo
Ventilo? Depuis 1998!
Posté le 04-03-2001 à 23:15:49  profilanswer
 

Un grand merci a Verdoux et Roswell_  :)  
Qui sait où je pourait me trouver sans eux? :D

n°16973
n0mad
inscrit au XXe siècle
Posté le 04-03-2001 à 23:21:08  profilanswer
 

Si tu aloues une chaine sur la pile d'une fonction, tu ne peux pas la renvoyer en valeur de retour.
 
Tu dois la créer sur le tas (avec malloc par exemple) mais tu auras ensuite à charge de la détruire ultérieurement.
 
Par contre, si tu utilises une CString (dans les MFC et qui possède un constructeur de copy) tu peux faire :
 
 
CString AvoirInfos ()  
{  
CString Nom;  
DWORD ml = 255;  
 
GetUserName (Nom.GetBuffer(ml),&ml); /* un pointeur sur un DWORD se caste en LPDWORD en principe */
 
Nom.ReleaseBuffer();  
return Nom;  
}


---------------
Pipiru piru piru pipiru pi

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [C/C++] GetUsername, les !$%$?% de pointeurs

 

Sujets relatifs
Plus de sujets relatifs à : [C/C++] GetUsername, les !$%$?% de pointeurs


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)