1. Пользуйтесь тегами кода. - [code] ... [/code] 2. Точно указывайте язык, название и версию компилятора (интерпретатора). 3. Название темы должно быть информативным. В описании темы указываем язык!!!
Запущен некоторый процесс (например, calc.exe). Требуется приостановить работу разрабатываемого приложения до момента завершения указанного процесса (т.е. calc.exe) или до истечения заданного времени (используем события).
создала объек-событие, дескриптор которого будем использовать в вызове функции WaitForSingleObject:
а теперь мне не понятно, как привязаться к тому процессу, до завершения которого мы приостанавливаем работу разрабатываемого..? объясните пожалуйста, как это должно выглядеть..?
Объекты-события обычно используют в том случае, когда какой-то поток выполняет инициализацию, а затем сигнализирует другому потоку, что тот может продолжить работу. Инициализирующий поток переводит объект "событие" в занятое состояние и приступает к своим операциям. Закончив, он сбрасывает событие в свободное состояние. Тогда другой поток, который ждал перехода события в свободное состояние, пробуждается и вновь становится планируемым.
У тебя нет не то что потока, у тебя даже процесс чужой. Как ты из чужого процесса хочешь вызывать SetEvent? Подменять WndProc того же самого calc.exe? Сомневаюсь, что это входило в задание...
Цитата
И как мне указывать, что именно при завершении такого-то процесса возобновлять моё приложение...я так и не пойму...
DWORD dw = WaitForSingleObject(process_ID, 15000); // Ждем 15 секунд или закрытия процесса // анализируешь dw для выяснения причины выхода из WaitForSingleObject
(возможно потребуется получить дубликат PID с нужными правами...)
Во время ожидания вызывающий процесс "замирает", после выхода из WaitFor... продолжает выполнение...
DWORD dw = WaitForSingleObject(process_ID, 15000); // Ждем 15 секунд или закрытия процесса // анализируешь dw для выяснения причины выхода из WaitForSingleObject
process_ID - это чей дескриптор? вызывающего приложения или стороннего?
Хочу получить дескриптор своего стороннего процесса (всё тот же calc.exe)...Возникла 6-я ошибка (дескриптор некорректный..)..Как это можно исправить, объясните пожалуйста..??
HANDLE h=OpenProcess(PROCESS_QUERY_INFORMATION,FALSE,PID);//результат операции - 0, PID- //идентификатор стороннего процесса DWORD Err=GetLastError(); DWORD dw = WaitForSingleObject(h, 15000); // Ждем 15 секунд или закрытия процесса