![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как правильно в ДЕЛФИ описать процедуру 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, там все-все написано...