Наташа Кулешова
Наташа Кулешова

Ожидание завершения запущенного процесса С++

Нужно запустить программу из моей программы и дождаться её завершения.

Написал такой код,

HINSTANCE hin;
hin= ShellExecute(0,L"open",L"7z.exe",L"x -y tesr.zip",0,SW_HIDE);

DWORD pro = WaitForSingleObject(hin,INFINITE);

while(pro!=WAIT_OBJECT_0)
{
pro = WaitForSingleObject(hin,INFINITE);
}

Программа не выходит из режима ожидание и зависает.

В чём ошибка или как лучше реализовать данный функционал?

Л!
Лис !!!!!!!!!!!!!!!!

HINSTANCE в данном случае не является валидным.
Посмотри документацию на ShellExecute http://msdn.microsoft.com/en-us/library/windows/desktop/bb762153%28v=vs.85%29.aspx

Return valueType: HINSTANCEIf the function succeeds, it returns a value greater than 32. If the function fails, it returns an error value that indicates the cause of the failure. The return value is cast as an HINSTANCE for backward compatibility with 16-bit Windows applications. It is not a true HINSTANCE, however. It can be cast only to an int and compared to either 32 or the following error codes below.

Используй CreateProcess для получения реального хендла процесса.

Похожие вопросы
при завершении работ включается "ожидание закрытия фоновых программ"
Как посмотреть ПОСЛЕДНИЙ запущенный процесс в UNIX?
Что может съедать запущенный процесс?
Пропадают запущенные процессы
Завершение процесса в определённое врямя.
Как узнать имя процесса запущеного окна? Есть окно программы, надо узнать ее процесс.
Как узнать имя процесса запущеного окна?
Какой процесс (процессы) является прародителем всех запущенных процессов в ProcessExplorer???
Завершение процесса если он перестал отвечать.
[Delphi] Помощь по функции TaskKill (Завершения процесса)