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

executer programme

4 réponses
Avatar
sophie.cape
Bonjour, je programme en C++ et je voudrais savoit s'il existe une fonction
permettant d'executer un executable donné s'il existe en blocant le
programmme jusqu'a la fin de l'execution du programme executé.
Je pourais utiliser sytem("executable.exe") mais cela present
k'inconvenient d'affichier une fenetre de console noire.
Merci de me répondre.

4 réponses

Avatar
Christian ASTOR
sophie.cape wrote:
Bonjour, je programme en C++ et je voudrais savoit s'il existe une fonction
permettant d'executer un executable donné s'il existe en blocant le
programmme jusqu'a la fin de l'execution du programme executé.
Je pourais utiliser sytem("executable.exe") mais cela present
k'inconvenient d'affichier une fenetre de console noire.
Merci de me répondre.



ShellExecuteEx() ou CreateProcess() + WaitForSingleObject()

ex =>

SHELLEXECUTEINFO sei;
ZeroMemory(&sei, sizeof(sei));
sei.cbSize = sizeof(sei);
sei.lpParameters = NULL;
sei.nShow = SW_SHOWNORMAL;
sei.lpFile = "Notepad";
sei.fMask = SEE_MASK_NOCLOSEPROCESS;
ShellExecuteEx(&sei);
if (sei.hProcess)
{
WaitForSingleObject(sei.hProcess, INFINITE );
MessageBox(NULL, "Terminé !", "Info", MB_OK | MB_ICONINFORMATION);
}

(dans un thread si on ne veut pas bloquer le prog appelant...)
Avatar
sophie.cape
>
ShellExecuteEx() ou CreateProcess() + WaitForSingleObject()

ex =>

SHELLEXECUTEINFO sei;
ZeroMemory(&sei, sizeof(sei));
sei.cbSize = sizeof(sei);
sei.lpParameters = NULL;
sei.nShow = SW_SHOWNORMAL;
sei.lpFile = "Notepad";
sei.fMask = SEE_MASK_NOCLOSEPROCESS;
ShellExecuteEx(&sei);
if (sei.hProcess)
{
WaitForSingleObject(sei.hProcess, INFINITE );
MessageBox(NULL, "Terminé !", "Info", MB_OK | MB_ICONINFORMATION);
}




Merci mais ton exemple affiche une erreur s'il ne trouve pas le programme.
or je voudrais que mon programe execute un autre programme SEULEMENT si il
existe.
Dois-je changer quelque-chose da,s ton code?
Avatar
Christian ASTOR
sophie.cape wrote:

Merci mais ton exemple affiche une erreur s'il ne trouve pas le programme.
or je voudrais que mon programe execute un autre programme SEULEMENT si il
existe.
Dois-je changer quelque-chose da,s ton code?



Si on met SEE_MASK_FLAG_NO_UI, il n'y aura pas de Dlg d'erreur s'il
n'est pas trouvé.
Avatar
sophie.cape
> Si on met SEE_MASK_FLAG_NO_UI, il n'y aura pas de Dlg d'erreur s'il
n'est pas trouvé.



C'est exactement se que je cherchait. Merci.