Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Tahir Гость
|
Добавлено: Ср Янв 14 2004 18:49 Заголовок сообщения: Проблема с CreateProcess.... |
|
|
Есть диалоговое окно приложения, которое в определенный момент запускает процесс посредством CreateProcess (экзешник). После этого диалоговое окно закрывается, а процесс, естественно, нет. Как сделать так, чтобы диалоговое окно оставалось открытым до тех пор, пока я не завершу процесс? |
|
Вернуться к началу |
|
|
lapulya Гость
|
Добавлено: Чт Янв 15 2004 12:08 Заголовок сообщения: Ну вот и ответ!!! |
|
|
STARTUPINFO startupInfo;
ZeroMemory(&startupInfo, sizeof(startupInfo));
startupInfo.cb = sizeof(startupInfo);
PROCESS_INFORMATION processInformation;
ZeroMemory(&processInformation, sizeof(processInformation));
BOOL result = CreateProcess(applicationName,
commandLine,
psaProcess,
psaThiead,
bInheritHandles,
fdwCreate,
pvEnvironment,
pszCurDir,
&startupInfo,
&processInformation);
тут делаем чего надо.....
а теперь ждем закрытия дочернего процесса, аточнее его главного потока
WaitForSingleObject(processInformation.hThread, INFINITE);
CloseHandle(processInformation.hThread);
CloseHandle(processInformation.hProcess); |
|
Вернуться к началу |
|
|
Tahir Гость
|
Добавлено: Чт Янв 15 2004 17:59 Заголовок сообщения: |
|
|
Надо, чтобы выполнялась какая-нибудь функция, например, раз в минуту ДО ТЕХ ПОР, пока не завершится процесс и WaitForSingleObject не вернет что-либо. Как это сделать? |
|
Вернуться к началу |
|
|
lapulya Гость
|
Добавлено: Ср Янв 21 2004 18:07 Заголовок сообщения: да нет ничего проще!!! |
|
|
STARTUPINFO startupInfo;
ZeroMemory(&startupInfo, sizeof(startupInfo));
startupInfo.cb = sizeof(startupInfo);
PROCESS_INFORMATION processInformation;
ZeroMemory(&processInformation, sizeof(processInformation));
BOOL result = CreateProcess(applicationName,
commandLine,
psaProcess,
psaThiead,
bInheritHandles,
fdwCreate,
pvEnvironment,
pszCurDir,
&startupInfo,
&processInformation);
int delay = 1000;
while(WaitForSingleObject(processInformation.hThread, 0) != WAIT_OBJECT_0)
{
// делаем чего надо
doSomething();
// спим сколько надо (delay количество милисекунд)
Sleep(delay); // при delay = 1000 задержка 1 секунда
}
CloseHandle(processInformation.hThread);
CloseHandle(processInformation.hProcess); |
|
Вернуться к началу |
|
|
|