Conersion char* LPCWSTR [Résolu]

Signaler
Messages postés
36
Date d'inscription
jeudi 29 mars 2007
Statut
Membre
Dernière intervention
4 février 2009
-
Messages postés
33
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
7 octobre 2010
-
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);

Merci d'avance pour votre aide

Aurel
A voir également:

8 réponses

Messages postés
36
Date d'inscription
jeudi 29 mars 2007
Statut
Membre
Dernière intervention
4 février 2009

c'est bon j'ai trouvé, voila le site qui m'a aidé (il faut quand même le cité):

http://mirror.sweon.net/madchat/emags/magattack/MAGaZine.txt

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;

   
   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);
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
MultiByteToWideChar est fait pour ca.
Mais si tu utilises CreateProcessWithLogonA au lieu de CreateProcessWithLogonW, tu n'auras même pas besoin de WCHAR

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
180
Date d'inscription
mercredi 22 décembre 2004
Statut
Membre
Dernière intervention
16 août 2012
2
mbstowcs
Messages postés
180
Date d'inscription
mercredi 22 décembre 2004
Statut
Membre
Dernière intervention
16 août 2012
2
Désolé, je n'avais pas vu la réponse de vecchio56 !
mbstowcs est à oublier.
Messages postés
36
Date d'inscription
jeudi 29 mars 2007
Statut
Membre
Dernière intervention
4 février 2009

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

LPCWSTR username[10];
LPCWSTR password[10];
CHAR Susername[10] = "aurel5";
CHAR Spassword[10] = "aurel";
MultiCharToWideChar(CP_ACP, 0, Susername, -1, username, 10);
MultiCharToWideChar(CP_ACP, 0, Spassword, -1, password, 10);

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);

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

avez vous des idées? merci d'avance
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
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];

(LPCWSTR signifie en fait const WCHAR*)

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
36
Date d'inscription
jeudi 29 mars 2007
Statut
Membre
Dernière intervention
4 février 2009

Et un grand merci a tous pour votre aide!!!
Messages postés
33
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
7 octobre 2010

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 :

LPCWSTR Nom;
Nom=L"Zine";

Jspr que c'est clair
Salut

Ro_Ot-M@n