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

Вниз

Завис или не завис ?   Найти похожие ветки 

 
Stefan   (2003-12-20 20:14) [0]

Имея идентификатор процесса (dwThreadId) пытаюсь определить висит или нет этот процесс. Функция должна возвращать false, если процесс "глюканул".

Однако этого не происходит, в чём ошибка ?
(часть кода выдрал из одного хелпа на буржуйском сайте)

function Process_Gluk(dwThreadId: DWORD): Boolean;
type
TIsHungThread = function(dwThreadId: DWORD): BOOL; stdcall;
var
hUser32 : THandle;
IsHungThread : TIsHungThread;
begin
Result := True;
hUser32 := GetModuleHandle("user32.dll");
if (hUser32 > 0)
then begin
@IsHungThread := GetProcAddress(hUser32, "IsHungThread"); // для Win98
if Assigned(IsHungThread)
then Result := not IsHungThread(dwThreadId);
end;
end;


 
Digitman ©   (2003-12-21 11:24) [1]

Thread и Process - две разные разницы


 
Stefan   (2003-12-21 13:32) [2]

значит такой вариант работать не будет, что ли -

var
h : hWnd;
t : dword;

begin
h := FindWindow(PChar("OpusApp"), nil); // ищем окно Word"а
t := GetWindowThreadProcessId(h, nil); // берём его ID
if Process_Gluk(t) then // процесс в норме
else // процесс висит
end;


 
Digitman ©   (2003-12-21 14:20) [3]

процесс не может "висеть" ... нечему там висеть)

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

то что "висит" основной код.поток процесса, еще не говорит о том, что "висят" и прочие код.потоки процесса, если таковые создавались в контексте процесса

касаемо твоего кода - с чего ты взял, что ф-ция IsHungThread() найдена в user32.dll ? Ведь если ф-ция не найдена, то ф-ция Process_Gluk() у тебя вернет True, и этот результат ты с какого-то перепугу интерпретируешь как "процесс в норме" !?


 
Stefan   (2003-12-21 19:59) [4]

честно говоря я слабо разбираюсь в недокументированных функциях Windows, но есть ряд статей толковых людей - вот их примеры я и использую:

http://www.rsdn.ru/article/qna/baseserv/hungapp.xml
http://ad.adriver.ru/cgi-bin/erle.cgi?sid=458?bt=1?pz=1?sz=/?rnd=219677267

может кто объяснит мне, что я должен сделать, чтобы определить приложение "висит" или нет ?



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

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

Наверх




Память: 0.47 MB
Время: 0.043 c
1-25783
Lena19
2004-02-26 11:02
2004.03.09
создание копии объекта


1-25819
Макс Реалов
2004-02-25 15:22
2004.03.09
Конструкторы и статические методы.


1-25812
Grinder
2004-02-25 20:26
2004.03.09
StringList умная сортировка


7-25958
Davey
2003-12-19 15:53
2004.03.09
Срочно!!!!!! SOS!!! ??D: Windows winlogon.exe ??????????


14-25900
Soft
2004-02-15 03:51
2004.03.09
Россия. Воры в Законе.