aurelbobol6
Messages postés36Date d'inscriptionjeudi 29 mars 2007StatutMembreDernière intervention 4 février 2009
-
7 déc. 2008 à 12:44
othmane1950
Messages postés33Date d'inscriptionlundi 3 avril 2006StatutMembreDernière intervention 7 octobre 2010
-
13 avril 2009 à 12:52
Bonjour,
je sais que cette question est tombée quelque fois mais je n'y arrive toujours pas !! voila je cherche à transformer un char* en LPCWSTR ? J'ai une méthode qui aura pour paramètres char* username et char* password car je veux des paramètres de types simple en entrée (pour faire du jni après). Cette méthode comportera le code suivant:
LPCWSTR username = L"UserName"; //conversion du char* en LPCWSTR
LPCWSTR password = L"password"; //conversion du char* en LPCWSTR
STARTUPINFOW si;
memset (&si, 0, sizeof(si));
si.cb = sizeof(si);
PROCESS_INFORMATION pi;
BOOL ok = CreateProcessWithLogonW (
username,
L".",
password,
LOGON_WITH_PROFILE,
NULL,
L"java -jar c:\\calcbox\\swing.jar",
0,
NULL,
NULL,
&si,
&pi);
j'ai du appliqué quelques modifications donc voici mon code:
char* usernameChar = "aurel5";
WCHAR usernameWChar[256];
LPCWSTR username = NULL;
//Conversation en Unicode
MultiByteToWideChar(CP_ACP, 0, usernameChar,strlen(usernameChar)+1, usernameWChar,sizeof(usernameWChar)/sizeof(usernameWChar[0]));
//Construction de la chaine de caractere de liaison par le IPC$, on aura besoin de ca !
username = usernameWChar;
char* passwordChar = "aurel";
WCHAR passwordWChar[256];
LPCWSTR password = NULL;
//Conversation en Unicode
MultiByteToWideChar(CP_ACP, 0, passwordChar,strlen(passwordChar)+1, passwordWChar,sizeof(passwordWChar)/sizeof(passwordWChar[0]));
//Construction de la chaine de caractere de liaison par le IPC$, on aura besoin de ca !
password = passwordWChar;
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 7 déc. 2008 à 13:35
MultiByteToWideChar est fait pour ca.
Mais si tu utilises CreateProcessWithLogonA au lieu de CreateProcessWithLogonW, tu n'auras même pas besoin de WCHAR
aurelbobol6
Messages postés36Date d'inscriptionjeudi 29 mars 2007StatutMembreDernière intervention 4 février 2009 7 déc. 2008 à 15:39
merci pour vos réponses.
donc je n'ai pas trouvé pour le CreateProcessWithLogonA, je me suis donc orienté vers le MultiByteToWideChar(), ce qui me donne
mais voici mon erreur... (désolé je débute en c++) alors c'est pas trop évident
warning C4005: 'UNICODE' : redéfinition de macro
arguments de ligne de commande : voir la définition précédente de 'UNICODE'
error C3861: 'MultiCharToWideChar' : identificateur introuvable
error C3861: 'MultiCharToWideChar' : identificateur introuvable
error C2664: 'CreateProcessWithLogonW' : impossible de convertir le paramètre 1 de 'LPCWSTR [10]' en 'LPCWSTR'
Les types pointés n'ont aucun rapport entre eux ; conversion nécessitant reinterpret_cast, cast de style C ou cast de style fonction
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 7 déc. 2008 à 15:53
Au temps pour moi, CreateProcessWithLogonW n'existe qu'en version Unicode, j'avais pas vérifié.
Dans ton code, tu te trompe dans la déclaration : le pendant de char (ou CHAR) en unicode est wchar_t ou (WCHAR). Tu dois donc écrire :
WCHAR username[10];
WCHAR password[10];
othmane1950
Messages postés33Date d'inscriptionlundi 3 avril 2006StatutMembreDernière intervention 7 octobre 2010 13 avril 2009 à 12:52
Salut tout le monde pour je sais que t'as pu réglé ton prob.
Mais c'est juste pour ceux qui cherchent une solution plus facile et en c++...
la voila :
Il suffit juste d'ajouter le L avant la chaine de caractère
exemple :
LPCWSTR Nom;
Nom="Zine";
Cela va donné probablement l'erreur impo de convertir du char[4] en LPCWSTR
donc la solution à faire est :