Главная страница
    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.45 MB
Время: 0.008 c
14-25942
Empleado
2004-02-17 12:46
2004.03.09
SQL Query


14-25858
Daemys
2004-02-17 09:32
2004.03.09
Глюк Матрицы?


1-25801
garry79
2004-02-25 23:20
2004.03.09
Что за ListView дурацкий, то Итемы местами не меняются, теперь


1-25806
sohat
2004-02-27 09:12
2004.03.09
Memo с выделением зарезервированных слов для скриптов


1-25809
Mur_r
2004-02-21 08:01
2004.03.09
TChart





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский