Bonjour,
Je tant par le code suivant d'afficher le user name puis de l'encoder en hexa:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| #if defined (Q_OS_WIN32) || defined (Q_OS_WINCE)
/** \brief Return the encoded user name
\return Return the encoded user name open with session */
QString UltracopierWindowsGetUserName()
{
QString userName;
DWORD size=0;
if(GetUserName(NULL,&size) || (GetLastError()!=ERROR_INSUFFICIENT_BUFFER))
{
}
else
{
WCHAR * userNameW=new WCHAR[size];
if(GetUserName(userNameW,&size)){
userName.fromWCharArray(userNameW,size*2);
DEBUGCONSOLE(90,"UltracopierWindowsGetUserName","userName before encoding: \""+userName+"\"");
userName=QString(QByteArray((char*)userNameW,size*2-2).toHex());
}
delete userNameW;
}
DEBUGCONSOLE(90,"UltracopierWindowsGetUserName","userName: \""+userName+"\"");
return userName;
}
#endif |
Bizarement mon fromWCharArray() me retourne une chaine vide, et:
QByteArray((char*)userNameW,size*2-2
Me retourne 7500730065007200 pour le nom d'utilisateur: "user"
En utf16 ça devrai étre les 00 avant: 0075007300650072
J'aimerai savoir si j'ai tord, et les causes du problème (qu'es que j'ai mal fait).
Merci d'avance de votre aide.
Partager