Как дождаться, пока ShellExecute запустит несколько файлов?

Я уже нашел код, заставляющий программу ждать 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);

person drgy    schedule 05.01.2015    source источник
comment
Вызовите ShellExecuteEx несколько раз, по одному разу для каждого файла, который вы хотите запустить, затем подождите на всех дескрипторах (либо сразу с WaitForMultipleObjects, либо по одному).   -  person Igor Tandetnik    schedule 06.01.2015
comment
Я получил это для ожидаемой части: WaitForMultipleObjects(4, hProcess, TRUE, INFINITE) Но как я могу назначить разные HANDELS для каждого выполнения файла?   -  person drgy    schedule 06.01.2015
comment
Это не скомпилируется. Второй параметр WaitForMultipleObjects не HANDLE, а HANDLE* — указатель на массив N хэндлов, где N — первый параметр. В любом случае, чтобы упростить задачу, вы можете просто вызвать WaitForSingleObject в цикле, один раз для каждого дескриптора.   -  person Igor Tandetnik    schedule 06.01.2015