Conersion char* LPCWSTR [Résolu]

aurelbobol6 36 Messages postés jeudi 29 mars 2007Date d'inscription 4 février 2009 Dernière intervention - 7 déc. 2008 à 12:44 - Dernière réponse : othmane1950 36 Messages postés lundi 3 avril 2006Date d'inscription 7 octobre 2010 Dernière intervention
- 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

aurelbobol6 36 Messages postés jeudi 29 mars 2007Date d'inscription 4 février 2009 Dernière intervention - 7 déc. 2008 à 16:07
+3
Utile
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);
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de aurelbobol6
vecchio56 6539 Messages postés lundi 16 décembre 2002Date d'inscription 22 août 2010 Dernière intervention - 7 déc. 2008 à 13:35
0
Utile
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
cs_Lucky92 180 Messages postés mercredi 22 décembre 2004Date d'inscription 16 août 2012 Dernière intervention - 7 déc. 2008 à 14:08
0
Utile
mbstowcs
Commenter la réponse de cs_Lucky92
cs_Lucky92 180 Messages postés mercredi 22 décembre 2004Date d'inscription 16 août 2012 Dernière intervention - 7 déc. 2008 à 14:13
0
Utile
Désolé, je n'avais pas vu la réponse de vecchio56 !
mbstowcs est à oublier.
Commenter la réponse de cs_Lucky92
aurelbobol6 36 Messages postés jeudi 29 mars 2007Date d'inscription 4 février 2009 Dernière intervention - 7 déc. 2008 à 15:39
0
Utile
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
vecchio56 6539 Messages postés lundi 16 décembre 2002Date d'inscription 22 août 2010 Dernière intervention - 7 déc. 2008 à 15:53
0
Utile
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
aurelbobol6 36 Messages postés jeudi 29 mars 2007Date d'inscription 4 février 2009 Dernière intervention - 7 déc. 2008 à 16:08
0
Utile
Et un grand merci a tous pour votre aide!!!
Commenter la réponse de aurelbobol6
othmane1950 36 Messages postés lundi 3 avril 2006Date d'inscription 7 octobre 2010 Dernière intervention - 13 avril 2009 à 12:52
0
Utile
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.