IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++/CLI Discussion :

Probl�me avec CreateProcess


Sujet :

C++/CLI

  1. #1
    Membre �clair�
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    932
    D�tails du profil
    Informations personnelles :
    �ge : 39
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 932
    Par d�faut Probl�me avec CreateProcess
    Bonjour,

    j'ai trouv� dans la faq un code montrant comment utiliser createprocess mais je ne comprend pas pourquoi il ne marche jamais :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    	STARTUPINFO         siStartupInfo;
    	PROCESS_INFORMATION piProcessInfo;
     
    	memset(&siStartupInfo, 0, sizeof(siStartupInfo));
    	memset(&piProcessInfo, 0, sizeof(piProcessInfo));
    	siStartupInfo.cb = sizeof(siStartupInfo);
    	if(CreateProcess((LPCWSTR)"c:\\windows\\NOTEPAD.EXE",(LPWSTR)
    							   "c:\\monfic",0,0,FALSE,
    							   CREATE_DEFAULT_ERROR_MODE,0,0,                              
    							   &siStartupInfo,&piProcessInfo) == FALSE)
    	{
    		System::Windows::Forms::MessageBox ^ message;
    		message->Show("impossible de lancer l'apprentissage");
    	}
    	else
    	{
    	   // attente
    	   WaitForSingleObject(piProcessInfo.hProcess, INFINITE);
     
    	   CloseHandle(piProcessInfo.hThread);
    	   CloseHandle(piProcessInfo.hProcess);
    	}
    les seules choses que j'ai chang� par rapport au code de la FAQ, ce sont les 2 casts (LPCWSTR) car il me mettait en erreur "impossible de convertir const char en LPCWSTR"... j'ai aussi ajout� un messagebox en cas d'erreur et il apparait toujours ! (alors que mon fichier existe bien sur...)

    un id�e?

  2. #2
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Les casts entre char et wchar_t, c'est mal.
    Tu dois soit appeler explicitement CreateProcessA(), soit utiliser des TCHAR.

    De plus, le second param�tre de CreateProcess() ne doit PAS �tre une cha�ne litt�rale.
    Code C++ : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    	STARTUPINFO         siStartupInfo;
    	PROCESS_INFORMATION piProcessInfo;
     
    	memset(&siStartupInfo, 0, sizeof(siStartupInfo));
    	memset(&piProcessInfo, 0, sizeof(piProcessInfo));
    	siStartupInfo.cb = sizeof(siStartupInfo);
    	TCHAR cmdLine[] = _T("c:\\monfic");
    	BOOL created = CreateProcess(_T("c:\\windows\\NOTEPAD.EXE"), cmdLine,
    	 0,0,FALSE,
    	 CREATE_DEFAULT_ERROR_MODE,0,0,                              
    	 &siStartupInfo,&piProcessInfo
    	 );
    	if(!created)
    	{
    		System::Windows::Forms::MessageBox ^ message;
    		System::Windows::Forms::MessageBox::Show(L"impossible de lancer l'apprentissage");
    	}
    	else
    	{
    		// attente de fin du processus.
    		WaitForSingleObject(piProcessInfo.hProcess, INFINITE);
     
    		CloseHandle(piProcessInfo.hThread);
    		CloseHandle(piProcessInfo.hProcess);
    	}
    PS: Si tu es en .Net, tu devrais plut�t utiliser la classe System:iagnostics:rocess...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. probl�me avec createProcess
    Par splifo dans le forum C
    R�ponses: 2
    Dernier message: 27/05/2008, 15h30
  2. probl�me avec createProcess
    Par splifo dans le forum Windows
    R�ponses: 2
    Dernier message: 27/05/2008, 15h30
  3. [MT] Probl�me avec CreateProcess
    Par rzayani dans le forum C++
    R�ponses: 4
    Dernier message: 03/05/2007, 18h28
  4. Probl�me avec CreateProcess.
    Par Trap D dans le forum Visual C++
    R�ponses: 4
    Dernier message: 20/12/2006, 22h44
  5. Probl�me avec CreateProcess
    Par maxplusplus dans le forum C++Builder
    R�ponses: 2
    Dernier message: 20/07/2005, 10h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo