hook??
маленький вопрос:
я хочу поставить WH_CBT хук на создание/разрушение окон верхнего уровня.
как это сделать?
спасибо.
если можно с примерчиком.
на си или на делфи - без разницы
(главное не на ВБ 8))
еще раз спасибо.
Известна и причина по которой нельзя садить неглобальный хук в прога, а именно в ДЛЛ...
Но можете ли вы привести пример проги срабатывающей на СОЗДАНИИ/РАЗРУШЕНИИ окон верхнего уровня?
Я знаю, что либо через WH_CBT или WH_SHELL или WH_CALLWNDPROC, но как именно?
Спасибо!
Если не трудно с ПРИМЕРОМ
Известна и причина по которой нельзя садить неглобальный хук в прога, а именно в ДЛЛ...
Но можете ли вы привести пример проги срабатывающей на СОЗДАНИИ/РАЗРУШЕНИИ окон верхнего уровня?
Я знаю, что либо через WH_CBT или WH_SHELL или WH_CALLWNDPROC, но как именно?
Спасибо!
Если не трудно с ПРИМЕРОМ
Цитата:
Вообщем вот исходничек DLL'ки, вообщем не сложно разберешься:
library hook_dll;
uses
Windows,
Messages,
Forms;
var
SysHook : HHook = 0;
Wnd : Hwnd = 0;
function SysMsgProc(code : integer; wParam : word; lParam : longint) : longint; stdcall;
begin
if code = HSHELL_WINDOWCREATED then
begin
//Сдесь делаем с окном все что нужно
end;
Result:=CallNextHookEx(SysHook, Code, wParam, lParam);
end;
procedure hook(switch : Boolean) export; stdcall;
begin
if switch=true then
begin
SysHook := SetWindowsHookEx(WH_SHELL, @SysMsgProc, hInstance, 0);
if SysHook <> 0 then MessageBox(0, 'HOOK установлен !', 'Message', 0)
else MessageBox(0, 'HOOK установить не удалось !', 'Message', 0);
end
else
begin
if UnhookWindowsHookEx(SysHook) then MessageBox(0, 'HOOK снят !','Message', 0)
else MessageBox(0, 'HOOK снять не удалось !', 'Message', 0);
SysHook := 0;
end;
end;
exports hook;
begin
end.