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

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

Не ставится СВТ хук. [D5, WinXP]


Solo ©   (2004-09-03 20:34:00) 

Здравствуйте, возникла следующая проблема:
пытаюсь поставить СВТ хук из DLL, при следующем вызове все виснет и спасает только Reset:

Handle:= SetWindowsHookEx(wh_CBT, CBTProc, HInstance, 0);

Если заменить wh_CBT на к примеру wh_Keyboard, то все изумительно работает. В чем дело не подскажете? Ни каких антивирусов и прочих подозрительных программ не запущено.


Sur   (2004-09-06 15:36:00) [1]


> Solo   (05.09.04 22:57) [7]
> 2 Sur: что такое hDLL?

hDLL := LoadLibrary('Hook.dll');
hProc := GetProcAddress(hDLL,'CBTProc');
hHook1 := SetWindowsHookEx(WH_CBT,hProc,hDLL,0);


Digitman   (2004-09-06 10:12:00) [2]

CBTHandle:=SetWindowsHookEx(wh_CBT, @CBTFunc, HInstance, 0);

procedure UnsetCBTHook;StdCall;
begin                                
//  CloseHandle(CBTHandle); // ??????
  UnhookWindowsHook(CBTHandle); //!!
end;

...
 Result:=CallNextHookEx(CBTHandle, Code, wParam, lParam); //CBTHandle д.б. глобально доступной переменной!!


kaZaNoVa   (2004-09-06 09:50:00) [3]

[7] Solo   (05.09.04 22:57)
> тестовый проектик webfile.ru/49842.

у меня 98 винда и при попытке запустить всё зависло ....
зы- у тя разрешение экрана 800*600  ?


Digitman   (2004-09-06 09:30:00) [4]


> Там СВТ-хук должен ставиться для работы в пределах одного
> процесса


"там"-то может и "должен", но "здесь" ты пытаешься поставить глоб.хук, т.е. во всехGUI-процессах !

Приведи весь код, касаемый идентификатора CBTProc - где и как определен, реализация этой ф-ции и т.д. и т.п.


Solo   (2004-09-05 22:57:00) [5]

2 Sur:что такое hDLL?

Вот выложил простенький тестовый проектик webfile.ru/49842. Там СВТ-хук должен ставиться для работы в пределах одного процесса. Но вот не ставиться зараза - все виснет на вызове функции SetWindowsHookEx. Подскажите что не так.


Sur   (2004-09-05 19:38:00) [6]

Handle:= SetWindowsHookEx(wh_CBT, CBTProc, HInstance, 0);
У меня ано выглядет так:
Handle:= SetWindowsHookEx(wh_CBT, CBTProc, hDLL, 0);


Cobalt   (2004-09-04 02:09:00) [7]

Мы тоже ничего не понимаем - попробуй привести немного больше кода, касающегося установки хука и самого обработчика, деклараций и проч.
Неплохим вариантом - выложить архив с исходниками в инет, например на http://www.webfile.ru/


Solo   (2004-09-04 00:48:00) [8]

2 kaZaNoVa
Не понял что заначит "на нём много функций навешано" вызов как вызов, множество раз ставил хуки на клаву и на мышь, без проблем, как только не извращался, а тут ничего не пойму.


kaZaNoVa   (2004-09-03 22:13:00) [9]

[2] Solo   (03.09.04 21:58)

> на вызове SetWindowsHookEx.

на нём много функций навешано ?


Solo   (2004-09-03 21:58:00) [10]

Виснет именно на вызове SetWindowsHookEx.


Cobalt   (2004-09-03 21:32:00) [11]

когда именновиснет?
Не понял...


Наверх

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