| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 |