Я уже нашел код, заставляющий программу ждать ShellExecuteEx в этом потоке. Как я могу заставить ShellExecuteEx запускать несколько файлов и ждать, пока каждый файл не будет закрыт?
Вот код для ожидания одного:
SHELLEXECUTEINFO ShExecInfo = {0};
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = NULL;
ShExecInfo.lpFile = "c:\\MyProgram.exe";
ShExecInfo.lpParameters = "";
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_SHOW;
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo);
WaitForSingleObject(ShExecInfo.hProcess,INFINITE);
ShellExecuteEx
несколько раз, по одному разу для каждого файла, который вы хотите запустить, затем подождите на всех дескрипторах (либо сразу сWaitForMultipleObjects
, либо по одному). - person Igor Tandetnik   schedule 06.01.2015WaitForMultipleObjects(4, hProcess, TRUE, INFINITE)
Но как я могу назначить разные HANDELS для каждого выполнения файла? - person drgy   schedule 06.01.2015WaitForMultipleObjects
неHANDLE
, аHANDLE*
— указатель на массивN
хэндлов, гдеN
— первый параметр. В любом случае, чтобы упростить задачу, вы можете просто вызватьWaitForSingleObject
в цикле, один раз для каждого дескриптора. - person Igor Tandetnik   schedule 06.01.2015