Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > HOOK


Автор: Spawn 24.12.2002, 19:06
Я решил разобраться с Хуком, но почему то, если я ставлю Хук на WH_MSGFILTER, то при перетаскивании окна, на которое был поставлен Хук, оно дестроится. Отчего ето может быть???

var
HookHandle: hHook;


function HookProc(Code: integer; WParam: word; LParam: Longint): Longint; stdcall;
var
msg: PMSG;
begin
if Code >= 0 then begin
  result := 0;
  msg := Pointer(LParam);
  Form1.ListBox1.Items.Add(IntToStr( msg.message));
end else
  result := CallNextHookEx(HookHandle, code, WParam, LParam);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
h:HWND;
begin
h:=FindWindow(...);
if h<>0 then
HookHandle := SetWindowsHookEx(WH_MSGFILTER, @HookProc, HInstance, GetWindowThreadProcessId(h) );
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
if HookHandle <> 0 then
  UnhookWindowsHookEx(HookHandle);
end;

Хук устанавливается не из DLL - может в етом дело?

Причем если етот код я делаю на Handle, то все работает.
Подскажите, пожалуйста, в чем может быть дело.
Заранее благодарен.

Автор: Song 24.12.2002, 22:14
А зачем тебе WH_MSGFILTER?

Автор: Spawn 24.12.2002, 23:03
Просто в одном приложении при некоторых условиях появляется диалоговое окно. Вот я и решил попробовать его отловить етим.

Автор: Song 24.12.2002, 23:23
Чтобы отловить окно, надо WH_CBT

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)