View Full Version : [C++] Eseguire programma esterno
ciroshare
20-04-2009, 20:11
Salve a tutti. Ho un programma scritto in visual c++. Avrei l'esigenza di mandare in esecuzione un programma .exe esterno. Come posso fare?
includi <cstdlib>, <cstdio> e chiama la funzione system
DanieleC88
20-04-2009, 21:43
Oppure puoi appoggiarti alle funzionalità offerte dal sistema operativo (ShellExecute() su Windows e fork() + exec*() su Unix).
ShellExecute é piu generica, serve ad "aprire" un file come se ci si cliccasse sopra due volte col mouse nella shell grafica; volendo usare le API io userei CreateProcess, o WinExec per semplicitá.
DanieleC88
20-04-2009, 22:29
Vabbe', non è il mio campo... :Prrr:
ciroshare
21-04-2009, 08:11
Grazie a tutti mi informerò su queste modalità... eventualmente passerò di qui per eventuali dubbi :)
Ciao!
ciroshare
21-04-2009, 19:18
Ciao ho implementato il tutto con la funzione system()... ho notato che quando chiamo questa il mio eseguibile si apre una finestra di comando... sapete se c'è un modo per nascondere questa visualizzazione?
DanieleC88
21-04-2009, 19:21
Con le API di Win32 citate da 71104. :)
ciroshare
22-04-2009, 08:08
Ciao ho creato il processo con la CreateProcess ma la finestra console si apre ugualmente... devo forse impostare qualche parametro?
ciroshare
22-04-2009, 09:25
Posto la soluzione, se qualcuno in futuro ne avesse bisogno ;)
Ci sono riuscito chiamando in questo modo:
CreateProcess(
NULL, // No module name (use command line)
path, // path to execution file
NULL, // Process handle not inheritable
NULL, // Thread handle not inheritable
FALSE, // Set handle inheritance to FALSE
CREATE_NO_WINDOW, // creation flags
NULL, // Use parent's environment block
NULL, // Use parent's starting directory
&si, // Pointer to STARTUPINFO structure
&pi ) // Pointer to PROCESS_INFORMATION structure
Il trucco è quindi inmpostare il creation flags a CREATE_NO_WINDOW
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.