Executer un fichier externe executable a partir du code C
bessem2012
Messages postés10Date d'inscriptionlundi 2 mai 2005StatutMembreDernière intervention 9 mai 2005
-
2 mai 2005 à 12:17
yserver
Messages postés203Date d'inscriptionlundi 2 août 2004StatutMembreDernière intervention 8 septembre 2006
-
4 mai 2005 à 17:15
Bonjour
je veux bien executer un fichier executable .exe à partir du code c et c++ (je travaille mnt sur C++ builder)
Je veux savoir qu'elle est la commande qui me permet de faire ça
merci
bessem2012
Messages postés10Date d'inscriptionlundi 2 mai 2005StatutMembreDernière intervention 9 mai 2005 2 mai 2005 à 12:58
Merci!
j'ai un autre probleme!
Comment utiliser cette commande si j'ai des argument en plus!
par exp, je veux executer "file.exe -e input.inp"
telque input.inp existe dans un champ text Edit
Merci
bessem2012
Messages postés10Date d'inscriptionlundi 2 mai 2005StatutMembreDernière intervention 9 mai 2005 3 mai 2005 à 10:33
Pour la solution de Shellexecute, elle est trés bien!
Mais pour System, elle n'est pas pratique pour mon cas, car elle ouvre une fenêtre MSDOS, et elle reste ouverte tant que l'application n'est pas terminée
BunoCS
Messages postés15475Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention23 avril 2024103 4 mai 2005 à 11:27
Je te l'ai donné dans sa version la plus "simple"
En fait, t'as besoin de 2 structures:
- STARTUPINFO dans laquelle tu lui spécifies tes "options d'exécution" (Show Window et Standard Handles ici). Dans cet exemple, j'ai demandé à ne pas voir la fenêtre de commande Windows (_SI.wShowWindow=SW_HIDE) et à utiliser les E/S standards (NULL par défaut donc)
- PROCESS_INFORMATION qui sert à retourner les informations du déroulement du process externe, notamment à savoir si le process s'est terminé corectement.
En théorie, t'as juste à faire un "Copier/Coller" de cette portion de code et à changer la string _CommandLine pour ton cas.
L'avantage est non négligeable si, par exemple, ton process externe crée des fichiers que tu dois utiliser par la suite: avec le "WaitForSingleObjet" tu sais qu'ils sont crées.
A toi de voir
Buno
----------------------------------------
L'urgent est fait, l'impossible reste à faire. Pour les miracles, prévoir un délai...
BunoCS
Messages postés15475Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention23 avril 2024103 4 mai 2005 à 16:43
ça sert à être sûr que, si tu as besoin du resultat de cette manip externe, ce résultat est valide. Un exemple concret: Je dois filtrer une video avec VirtualDub pour ensuite travailler dessus. En sortant du shellExecute, la video resultat n'existe pas encore, vu que VDub n'a pas terminé son boulot. Plantage donc à l'accès à ce fichier. Avec un process, plus de problème de ce genre...
@+
Buno
----------------------------------------
L'urgent est fait, l'impossible reste à faire. Pour les miracles, prévoir un délai...
yserver
Messages postés203Date d'inscriptionlundi 2 août 2004StatutMembreDernière intervention 8 septembre 2006 4 mai 2005 à 17:15
Buno utiliser ShellExecutEx me semble bien plus simple. Cela te permettra d'attendre que le process lance soit fini par exemple pour passé à la suite. Cela te permet de garder un certain control sur le process lancé par ShellExecutEx.
Je crois pas être très clair, mais cela semble correspondre a ce que fait ton code en plus simple. Plus d'info sur MSDN