Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2004.03.09;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.009 c
4-25971
Номолос
2004-01-01 19:39
2004.03.09
Small icons


1-25810
REVERSE
2004-02-25 23:43
2004.03.09
Слежение за подключениями программ к и-нету


1-25741
Goida
2004-02-26 17:10
2004.03.09
Точное время!


14-25916
SergP
2004-02-13 04:23
2004.03.09
Как лучше сделать запрос?


1-25821
Эли
2004-02-25 12:44
2004.03.09
Как получить текст из редактора другой программы





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский