GetUsername, les !$%$?% de pointeurs [C/C++] - Programmation
Marsh Posté le 04-03-2001 à 20:16:10
Effectivement
mais c'est sourtout l'API de windows qui me tue!
Marsh Posté le 04-03-2001 à 22:23:44
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;
}
Marsh Posté le 04-03-2001 à 22:50:40
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
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--
Marsh Posté le 04-03-2001 à 23:15:49
Un grand merci a Verdoux et Roswell_
Qui sait où je pourait me trouver sans eux?
Marsh Posté le 04-03-2001 à 23:21:08
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;
}
Marsh Posté le 04-03-2001 à 19:58:28
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: