Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > CreateProcess, слежение за программой в потоке


Автор: ЧеловекБорща 6.10.2010, 13:17
Доброго времени суток!


Создаю поток TThread в нем используя CreateProcess запускаю программу, дале WaitForSingleObject(Pi.hProcess, INIFINITE) жду завешения программы.

Как на протяжении всей работы программы-потока выполнять действие? 

К примеру следить за системным временем:
Если системное время совподает с заданным пользователем  то производить действие(Закрывать поток, выводить сообщение) .

Или к примеру на протяжении всей работы программы-потока следить за нагрузкой програмы на процессор.


Как?

Автор: bems 6.10.2010, 21:53
Для начала: что ты понимаешь под программой-потоком.
Ты в своем потоке создаешь новый процесс с его первичным потоком. Что такое программа-поток не понятно.

Автор: ЧеловекБорща 11.10.2010, 12:02
Моя программа создаёт поток TThread, а тот в свою очередь запускает другую программу используя CreateProcess.
Поток tthread ждёт завершения программы(WaitForSingleObject(pi.hProcess,INFINIE), как на протяжении всего времени работы потока tthread(Программы) выполнять действие? К примеру следить за системным временем и в назначенноевремя закрыть программу? 

Автор: bems 11.10.2010, 18:19
ждать не INIFINITE, а указать интервал

Автор: ЧеловекБорща 12.10.2010, 16:20
А если необходимо ждать завершения процесса(infinite) и ждать определённого момента? К примеру следить за временем и в определенный момент завершить процесс? Или на протяжении всего ождиния завершения выполнять какое-то действие...

Проще говоря "таймер в потоке"...

Автор: Riply 12.10.2010, 17:25
Цитата(ЧеловекБорща @  12.10.2010,  16:20 Найти цитируемый пост)
А если необходимо ждать завершения процесса(infinite) и ждать определённого момента?


WaitForMultipleObjects(Ex)  ?

Добавлено через 1 минуту и 43 секунды
Цитата(ЧеловекБорща @  12.10.2010,  16:20 Найти цитируемый пост)
Или на протяжении всего ождиния завершения выполнять какое-то действие...


Например, ожидание поместить в нить.

Автор: bems 12.10.2010, 18:27
посчитай интервал с момента создания процесса, до момента когда нужно завершить и указывай его в WaitForSingleObject. Если она возвращает WAIT_TIMEOUT, то процесс нужно завершить

Автор: ЧеловекБорща 12.10.2010, 18:35
Цитата(Riply @  12.10.2010,  17:25 Найти цитируемый пост)
Например, ожидание поместить в нить.


Можно пояснить, пожалауйста?  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)