C lancer progamme externe

Yunchi Messages postés 100 Date d'inscription lundi 30 octobre 2006 Statut Membre Dernière intervention 14 avril 2009 - 9 juil. 2007 à 07:20
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 - 9 juil. 2007 à 12:54
Bonjour,

J'aimerai lancer une application externe depuis un programme en C.

La commande system("test.exe"); marche bien mais le probleme avec cette fonction est qu'elle attend que le programme test.exe se finisse avant de pouvoir faire autre chose.

J'aimerai donc savoir s'il existe d'autres fonctions faisant la meme chose mais sans mettre en pause le programme qui le lance.

J'ai aussi essayer ShellExecute(NULL,NULL,"test.exe",NULL,NULL,SW_SHOW); mais il y'a une erreur avec le dernier parametre lors de la compilation.
" 'SW_SHOW' undeclared (first use in this function) "
pareil avec SW_SHOWNORMAL

Si quelqu'un connait une solution je le remercie d'avance

8 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 juil. 2007 à 09:19
#include <windows.h>

ciao...
BruNews, MVP VC++
0
Yunchi Messages postés 100 Date d'inscription lundi 30 octobre 2006 Statut Membre Dernière intervention 14 avril 2009
9 juil. 2007 à 09:33
Merci bien ca marche maintenant ShellExecute :)
0
Yunchi Messages postés 100 Date d'inscription lundi 30 octobre 2006 Statut Membre Dernière intervention 14 avril 2009
9 juil. 2007 à 09:35
euh quelqu'un peut m'expliquer rapidement la difference entre lancer un programme avec system("prog.exe"); et
ShellExecute(NULL,NULL,"prog.exe",NULL,NULL,SW_SHOW); ?

merci
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 juil. 2007 à 09:41
system() est une lib du runtime C, donc une surcouche qui masque l'appel API.

ciao...
BruNews, MVP VC++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Yunchi Messages postés 100 Date d'inscription lundi 30 octobre 2006 Statut Membre Dernière intervention 14 avril 2009
9 juil. 2007 à 11:31
sur MSDN on trouve :

HINSTANCE ShellExecute(
HWND hwnd,
LPCTSTR lpOperation,
LPCTSTR lpFile,
LPCTSTR lpParameters,
LPCTSTR lpDirectory,
INT nShowCmd
);

pour le premier parametre c'est explique :
hwnd : [in] A handle to the owner window used for displaying a user interface (UI) or error messages. This value can be NULL if the operation is not associated with a window.

quelqu'un pourrait m'expliquer le premier parametre et me donner un exemple de ce que l'on peut mettre svp ?

merci
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
9 juil. 2007 à 11:55
Salut,

En général, on met le handle de la fenêtre principale. Pour le coup de la "user interface", je vois pas de quoi ils parlent, mais pour le message d'erreur, c'est ce handle qui est certainement passé à MessageBox.
Comme ça l'erreur est clairement associé à la fenêtre qui a le handle.

Si tu fait une appli console, je sais pas si il y a moyen de récupérer un handle sur ta fenêtre.

system, ça faisait un CreateProcess de cmd /C L_argument_passé_a_la_fonction, si mes souvenirs sont bons.

Donc en plus de prendre en charge les exes, ça prend les commande DOS, genre pause, dir...

Mais rien n'empèche de faire un cmd /C dans un ShellExecute. (Ou un CreateProcess bien sûr)
0
Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 2
9 juil. 2007 à 12:26
Récuperer le handle de la console:
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
9 juil. 2007 à 12:54
C'est un handle aussi, mais ce n'est pas celui de la fenêtre de la console. Celui là sert plutôt à identifier le "screen buffer".

Voilà une méthode proposée par Microsoft pour récupérer le handle de fenêtre de la console. Du bricolage...http://support.microsoft.com/?scid=kb%3Ben-us%3B124103&x=15&y=10
0
Rejoignez-nous