Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.16;
Скачать: CL | DM;

Вниз

Подскажите как усыпить процес   Найти похожие ветки 

 
Voyager ©   (2003-06-03 16:36) [0]

Наподоби SuspendThread для потоков


 
Digitman ©   (2003-06-03 16:46) [1]

"усыпляй" все потоки процесса


 
Reindeer Moss Eater   (2003-06-03 16:56) [2]

Процессы в Windows ничего не делают, они "существуют". Поэтому усыпить их нельзя.


 
Voyager ©   (2003-06-03 17:13) [3]

А как получить все потоки процесса если известен сам процесс?


 
Digitman ©   (2003-06-03 17:25) [4]

в общем случае - никак) ... в любом случае snapshot будет ! пока "усыпляешь" найденные, другие могут стартовать


 
Voyager ©   (2003-06-03 17:44) [5]

А если усыпить только главный поток?


 
Юрий Зотов ©   (2003-06-03 18:21) [6]

> Voyager © (03.06.03 17:44)

То другие (если они есть) будут продолжать работать.


 
Voyager ©   (2003-06-03 19:10) [7]

А какой влаг нужно послать в функцию CreateToolhelp32Snapshot чтобы она сделала слепок потоков конкретного процесса?


 
Voyager ©   (2003-06-04 14:41) [8]

Ну что, никто не знает?


 
Digitman ©   (2003-06-04 15:49) [9]

разве в хэлпе не написано ?)


 
Voyager ©   (2003-06-04 16:19) [10]

Но там есть примечание что, если ставиш TH32CS_SNAPTHREAD то он возращаются все потоки в системе, тоесть второй параметер игнорируется


 
jack128 ©   (2003-06-04 16:57) [11]

Voyager © (04.06.03 16:19)
Если присмотрется, то с структуре THREADENTRY32 обнаружется элемент th32OwnerProcessID...


 
Voyager ©   (2003-06-04 17:16) [12]

Вот мой код по остановке процесса:



Procedure SuspendProcess(hProcess:Cardinal);
var
handler:thandle;
data:TThreadEntry32;
begin
handler:=CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD ,hProcess);
if handler=1 then AddLog("Неполучилось сделать слепок");

AddLog("Suspend thread of process - "+inttostr(hProcess));
if Thread32First(handler,data) then
begin
if data.th32OwnerProcessID=hProcess then begin
SuspendThread(data.th32ThreadID);
end;
AddLog("Thread - "+inttostr(data.th32ThreadID));
while Thread32Next(handler,data) do begin
if data.th32OwnerProcessID=hProcess then begin
SuspendThread(data.th32ThreadID);
AddLog("Thread - "+inttostr(data.th32ThreadID));
end;
end;
end
else AddLog("Нет Snapshot-а");
CloseHandle(handler);
end;


В лог всегда попадает "Нет Snapshot-а".
Я уже запарился, подскажите где ошибка.



Страницы: 1 вся ветка

Текущий архив: 2003.06.16;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.028 c
1-50342
Evg12
2003-06-03 15:44
2003.06.16
Динамическая работа с MainMenu1


1-50333
VD601
2003-06-02 21:43
2003.06.16
О тос, как передаются данные.


1-50367
NeshBriges
2003-06-04 02:07
2003.06.16
ExtractIcon


3-50252
Gamar
2003-05-26 21:20
2003.06.16
Автоинкремент и паковка dBase


1-50347
Rulya
2003-06-03 04:38
2003.06.16
Гнератор случайных чисел