Conersion char* LPCWSTR [Résolu]

Messages postés
36
Date d'inscription
jeudi 29 mars 2007
Dernière intervention
4 février 2009
- - Dernière réponse : othmane1950
Messages postés
36
Date d'inscription
lundi 3 avril 2006
Derniè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);

Merci d'avance pour votre aide

Aurel
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
36
Date d'inscription
jeudi 29 mars 2007
Dernière intervention
4 février 2009
3
Merci
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);

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 104 internautes nous ont dit merci ce mois-ci

Commenter la réponse de aurelbobol6
Messages postés
6539
Date d'inscription
lundi 16 décembre 2002
Dernière intervention
22 août 2010
0
Merci
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
Commenter la réponse de vecchio56
Messages postés
180
Date d'inscription
mercredi 22 décembre 2004
Dernière intervention
16 août 2012
0
Merci
mbstowcs
Commenter la réponse de cs_Lucky92
Messages postés
180
Date d'inscription
mercredi 22 décembre 2004
Dernière intervention
16 août 2012
0
Merci
Désolé, je n'avais pas vu la réponse de vecchio56 !
mbstowcs est à oublier.
Commenter la réponse de cs_Lucky92
Messages postés
36
Date d'inscription
jeudi 29 mars 2007
Dernière intervention
4 février 2009
0
Merci
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
Commenter la réponse de aurelbobol6
Messages postés
6539
Date d'inscription
lundi 16 décembre 2002
Dernière intervention
22 août 2010
0
Merci
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
Commenter la réponse de vecchio56
Messages postés
36
Date d'inscription
jeudi 29 mars 2007
Dernière intervention
4 février 2009
0
Merci
Et un grand merci a tous pour votre aide!!!
Commenter la réponse de aurelbobol6
Messages postés
36
Date d'inscription
lundi 3 avril 2006
Dernière intervention
7 octobre 2010
0
Merci
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
Commenter la réponse de othmane1950

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.