![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
->>> Как можно приостановить Process. [Win95/98, WinME, NT4, Win2k]
Metallica © (2002-08-21 12:21:00)Как можно приостановить, а потом возобновить выполнение ПРОЦЕССА.
Да, (2002-08-22 04:38:00) [1]тут следует "приостановить", а потом "возобновить" не процесс, а саму систему, имхо Windows.
Digitman (2002-08-21 18:47:00) [2]>Metallica
Нет, ты неверно понял. С чего бы им останавливаться-то, всем потокам сразу ? Будет приостановлен/возобновлен лишь тот код.поток, хэндл которого передан параметром в соот.ф-ции управления потоком.
Скорее всего, я тебя неправильно понял, посчитав, что твоя задача - найти осн.код.поток заданного процесса и приостановить/возобновить его.
Соглашусь, пожалуй, с <Юрий Зотов © (21.08.02 18:21) > - произвольно манипулировать кодовыми потоками "чужого" процесса чревато фатальными ошибками.
Metallica (2002-08-21 18:25:00) [3]Digitman © (21.08.02 17:14)
Если я понял правильно, при остановке основного потока данного
процесса, остальные потоки тоже останавливаются...
Юрий Зотов (2002-08-21 18:21:00) [4]> А как сделать, что-бы не проходить по всем потокам процесса?
Честно говоря, не знаю. Думаю, что никак.
Более того, здесь порядок может иметь значение. Те микросекунды, которые проходят между остановкой/рестартом отдельных потоков, вообще говоря, могут привести к их рассогласованию и оказаться гибельными для процесса в целом (поскольку логику работы произвольной чужой программы мы знать заведомо не можем).
Digitman (2002-08-21 17:14:00) [5]>Metallica
Если ты о snapshot"е потоков заданного процесса, полученных механизмом ToolHelp, то первый (среди перечисленных) кодовый поток процесса будет основным (т.е. автоматически созданным и стартованным операционной системой при создании данного процесса), прочие же возможные - дополнительными.
Пока у меня не было повода сомневаться в этом.
Metallica (2002-08-21 13:24:00) [6]Юрий Зотов © (21.08.02 12:59)
А как сделать, что-бы не проходить по всем потокам процесса?
Metallica (2002-08-21 13:21:00) [7]> Ученик
Да, чужой.
Юрий Зотов (2002-08-21 12:59:00) [8]Процесса - никак. Исполняются не процессы, а их потоки.
Чужого - Suspend/ResumeThread.
Своего - либо задержка, либо Suspend/ResumeThread из ДРУГОГО потока (поскольку возобновить сам себя поток не сможет).
Ученик (2002-08-21 12:36:00) [9]Чужого ?