CreateProcess [Résolu]

vecchio56 6539 Messages postés lundi 16 décembre 2002Date d'inscription 22 août 2010 Dernière intervention - 5 déc. 2004 à 14:45 - Dernière réponse : olivierroyo 8 Messages postés mercredi 12 mars 2008Date d'inscription 4 septembre 2009 Dernière intervention
- 1 juil. 2009 à 16:35
Salut,
J'ai une petite question dont la réponse est sans doute dans la MSDN mais c'est vraiment long a lire alors avant de commencer je tente le coup ici. Est-il possible de récupérer le code de retour d'un module éxécuté avec CreateProcess?
Par exemple
STARTUPINFO si = {sizeof si};
PROCESS_INFORMATION pi = {0};
CreateProcess(0, "regedit", 0, 0, 0, 0, 0, 0, &si, &pi);
WaitForSingleObject(pi.hProcess, INFINITE);
// Combien a renvoyé l'éxécution de regedit?


Merci
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
cs_Nebula 790 Messages postés samedi 8 juin 2002Date d'inscription 7 juin 2007 Dernière intervention - 5 déc. 2004 à 15:14
3
Merci
The GetExitCodeProcess function retrieves the termination status of the specified process.

Merci cs_Nebula 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de cs_Nebula
Meilleure réponse
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 5 déc. 2004 à 15:15
3
Merci
GetExitCodeProcess

ciao...
BruNews, MVP VC++

Merci BruNews 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de BruNews
vecchio56 6539 Messages postés lundi 16 décembre 2002Date d'inscription 22 août 2010 Dernière intervention - 5 déc. 2004 à 15:18
0
Merci
Merci, je venais de trouver sur le forum
Commenter la réponse de vecchio56
olivierroyo 8 Messages postés mercredi 12 mars 2008Date d'inscription 4 septembre 2009 Dernière intervention - 30 juin 2009 à 09:05
0
Merci
Je remet le sujet au gout du jour,
j'ai noté un probleme avec: GetExitCodeProcess
J'ai un example ou je lance avec CreateProcess une page sur internetExplorer. Lorsqu'un fenetre ie, est deja lancee, le resulat de GetExitCodeProcess est "actif", meme si je ferme ma fenetre generee.
D'ou mes 2 questions:
1- y a t il un moyen de savoir precisement si ma fenetre et mon process est actif ou non.
2- vous auriez un example pour tuer un process avec ExitProcess ?
Commenter la réponse de olivierroyo
olivierroyo 8 Messages postés mercredi 12 mars 2008Date d'inscription 4 septembre 2009 Dernière intervention - 30 juin 2009 à 11:41
0
Merci
Ok, je me repond a moi meme, au cas ou ca interesse qqun.

1- curieusement lorsqu'on lance ie avec CreateProcess, il y a deux process de créés (merci la console!!). Ceci expliqueraitz bien cela. Ca marche super avec notePad par exemple.

2- pour fermer un prog exécuté via CreateProcess, il faut utiliser TerminateProcess().

qqun pourrait confirmer?
Commenter la réponse de olivierroyo
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 30 juin 2009 à 20:44
0
Merci
Si c'est un prog fenêtré, il convient de fermer proprement en envoyant un WM_CLOSE via PostMessage sur la fanêtre principale.

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
olivierroyo 8 Messages postés mercredi 12 mars 2008Date d'inscription 4 septembre 2009 Dernière intervention - 1 juil. 2009 à 15:55
0
Merci
Effectivement, mais pas evident de trouver son Hwnd avec le PROCESS_INFORMATION!
je suis passé par:
::EnumWindows(KillWindow, pi.dwProcessId);

et ma methode KillWindow compare les ids de toutes les fenetres ouvertes.
Commenter la réponse de olivierroyo
olivierroyo 8 Messages postés mercredi 12 mars 2008Date d'inscription 4 septembre 2009 Dernière intervention - 1 juil. 2009 à 16:35
0
Merci
pour eviter de passer par un CALLBACK:

HWND h = ::GetTopWindow(0 );
while ( h )
{
DWORD pid;
DWORD dwTheardId = ::GetWindowThreadProcessId( h,&pid);

if ( pid == /*your process id*/ )
{
// here h is the handle to the window
break;
}
h = ::GetNextWindow( h , GW_HWNDNEXT);
}
Commenter la réponse de olivierroyo

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.