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

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

Как правильно в ДЕЛФИ описать процедуру CBT хука? [D5, Win2k]


UNIVERSAL ©   (2003-01-17 16:01:00) 

Как правильно в ДЕЛФИ описать процедуру CBT хука, которая отлавливает создание окон? Всегда ли она должна быть описана в DLL или её можно описать в exe?


UNIVERSAL   (2003-01-24 14:16:00) [1]

>>Vasily Terekhov
Сорри неправ я.


UNIVERSAL   (2003-01-22 16:25:00) [2]

>>Vasily Terekhov
Вы неправы если размещаете процедуры установки и снятия хука в DLL вместе с процедурой обработки хука. В ссылке на МСДН, предоставленной выше, английским языком написано, что процедура обработки хука должна быть в DLL, а ставиться хук должен в отдельном приложении
цитата:
You must place a global hook procedure in a dynamic-link library (DLL) separate from the application installing the hook procedure.

Теперь у меня вопрос. Из хелпа на вышеуказанном сайте непонятно как должна работать процедура обработки хука в частности CBTProc
Возможно я невнимательно (1000 раз) посмотрел этот модуль, но я так и не понял что такое CBT в строке

if (nCode < 0) // do not process message
return CallNextHookEx(myhookdata[CBT].hhook, nCode, wParam, lParam);

и откуда оно берётся, а также NUMHOOKS?
Вообще как должна процедура обработки хука, наход-ся в DLL узнать хендл текущего хука (HHOOK), поставленного в приложении?
Кто-нить из профи помогите плз. Может я, конечно, дуратские вопросы задаю, но очень разобраться хочется.


UNIVERSAL   (2003-01-20 10:28:00) [3]

Подскажите, плз, как занести в приложение, ставящее хук (в ListBox), информацию о создании окна (т.е. другого приложения)?


Vasily Terekhov   (2003-01-20 09:32:00) [4]

// Set Hook
HookCBTHandle := SetWindowsHookEx(WH_CBT, @CBTHook, hInstance, 0);
if HookCBTHandle = 0 then
MessageBox(0, "Set CBT hook error", "ERROR", MB_ICONHAND);

// Remove hook
if HookCBTHandle <> 0 then
UnhookWindowsHookEx(HookCBTHandle);

// CBT Function
function CBTHook(Code : Integer; wParam, lParam: DWORD): Longint; stdcall;
begin
if Code >= 0 then
begin
case Code of
HCBT_MINMAX:
begin
end;
.........
end;
Result := 0;
end
else
Result := CallNextHookEx(HookCBTHandle, Code, wParam, lParam);
end;


UNIVERSAL   (2003-01-20 09:02:00) [5]

Спасибо посмотрю.


Игорь Шевченко   (2003-01-17 16:44:00) [6]

UNIVERSAL (17.01.03 16:13)

http://msdn.microsoft.com- примеров с хуками - полно.


UNIVERSAL   (2003-01-17 16:13:00) [7]

Я уже читал, видимо пригнадлежу к тем людям, до которых лучше доходит, когда им объясняют на примерах. Я только разбираюсь в этих хуках...


Игорь Шевченко   (2003-01-17 16:06:00) [8]

RTFM: SetWindowsHookEx, там все-все написано...


Наверх

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