Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

->>> Как можно приостановить 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]

Чужого ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо