![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
ЧеловекБорща |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 5.6.2010 Репутация: нет Всего: нет |
Всем доброго времени суток!
И так программа запускается в потоке tthread. Поток ждёт завершения работы программы. Как на протяжении всего ожидания выполнять какие-либо действия? К примеру получать нагрузку программы на процессор, или сверить время и в указанный момент закрыть программу и поток. В основном как на протяжении всего ожидания завершения работы программы, сверять всемя с системным(период пол секунды), и при совпадении с указанным пользователем, закрывать программу и поток? В потоке программа запускается используя CreateProcess функцию. Поток ждёт завершения процесса используя WaitForSingleObject(ProcessInformation.hProcess,INFINITE); Знаю о функции WaitForTimeOut, но я не пониамаю как её пользоваться и как она раюотает, можно ли расписать её действие и использование по подробнее? Буду примного благодарен! |
|||
|
||||
CROTishka |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 30.7.2009 Репутация: 1 Всего: 2 |
есть много вариантов решения твоей задачи
1) а)
б) создаём отдельный поток с маленьким приоритетом, в нём в непрерывном цикле делаем то, что ты хочешь в)
2) тут вообще и думать нечего - создаем таймер, задаём ивент, запускаем. |
||||
|
|||||
ЧеловекБорща |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 5.6.2010 Репутация: нет Всего: нет |
С таймером всё работает!
А вот в потоке Tthread где запускается переданная потоку программа, там надо реализовать данный механизм. т.е. пака работает программа поток который её запустил ждёт её завершения, и на протяжении раоты запущенной потоком программы(От запуска переданной в поток программы и до её завершения), поток наблюдает программу, сверяет системное время с заданным. Если заданное равно системному то закрываем процесс программы. (Поток сам закроется). Это сообщение отредактировал(а) ЧеловекБорща - 13.11.2010, 17:56 |
|||
|
||||
CROTishka |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 30.7.2009 Репутация: 1 Всего: 2 |
что тебе мешает запустить таймер в потоке, или в примерах, которые я тебе дал, вставить сверку с системным временем?
|
|||
|
||||
ЧеловекБорща |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 5.6.2010 Репутация: нет Всего: нет |
Решил вопрос при помощи WAIT_TIMEOUT
|
|||
|
||||
CROTishka |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 30.7.2009 Репутация: 1 Всего: 2 |
Да, кстати, если ваш оброботчик действия унаследован от TControl, то вы как вариант можете ещё перегрузить метод InitiateAction, и вставить туда обработку вашего действия.
Только в конструкторе не забудьте прописать ControlStyle := ControlStyle + [csActionClient]; |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |