Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Lancer une application dos depuis windows

2 réponses
Avatar
maby.jacques
Bonjour, je souhaite passer des parametres a une application console win32.
J'ai essayé avec shellexecute "nom de l'application", "parametres".. mais
la console s'ouvre et se referme aussitot.
Je ne sais plus comment faire, merci.

2 réponses

Avatar
Arnold McDonald \(AMcD\)
maby.jacques wrote:
Bonjour, je souhaite passer des parametres a une application console
win32. J'ai essayé avec shellexecute "nom de l'application",
"parametres".. mais la console s'ouvre et se referme aussitot.
Je ne sais plus comment faire, merci.



D'un point de vue programmatique, utilises la ligne de commande. Pour
récupérer les paramètres passés en ligne de commande à ton application
utilise getCommandLine() et parse les valeurs retorunées. Si tu exécutes
biniou.exe /p /x -p +5, tu récupèreras /p /x -p et +5 via GetCommandLine()
sous forme d'une liste qu'il te faut toi-même analyser.

Tu peux récupérer aussi via le lpCmdLine du WinMain(). Ou avec les
paramètres du main() d'un programme C. Etc. Etc.

--
Arnold McDonald (AMcD) - Help #57/2006

http://arnold.mcdonald.free.fr/
Avatar
Bertrand Lenoir-Welter
maby.jacques :

Bonjour, je souhaite passer des parametres a une application console win32.
J'ai essayé avec shellexecute "nom de l'application", "parametres".. mais
la console s'ouvre et se referme aussitot.
Je ne sais plus comment faire, merci.



BOOL RetCode;
PROCESS_INFORMATION ProcInfo;
STARTUPINFO StartInfo;
memset(&StartInfo,0,sizeof(StartInfo));
StartInfo.cb=sizeof(StartInfo);
RetCode=CreateProcess(0,
"C:MyDirMyPrgm.exe Arg1 Arg2 Arg3",
0,
0,
FALSE,
0,
0,
"C:MyDir",
&StartInfo,
&ProcInfo);

Regarde le help sur STARTUPINFO pour d'éventuels arguments de fenêtrage.

Ensuite, si t'as besoin d'attendre que ton programme se termine avant de
passer à la suite, utilise soit
WaitForSingleObject(ProcInfo.hProcess,INFINITE) soit plutôt une boucle
du genre :
while(WaitForSingleObject(ProcInfo.hProcess,100)==WAIT_TIMEOUT)
{
...->PumpWaitingMessages();
}
qui te permet entre autres de rafraîchir ta fenêtre.

Et pour terminer :
CloseHandle(ProcInfo.hThread);
CloseHandle(ProcInfo.hProcess);


C'est ce que j'utilise depuis des lustres pour lancer indistinctement
des programmes DOS ou Windows depuis une appli, et ça marche sans problème.