Вниз
Скачать: CL | DM;

О перехвате сообщений   Найти похожие ветки 

 
Redhopter ©   (2004-10-29 23:00) [0]

Здравствуйте товарищи!!!!
Помогите найти ошибку в Dll

Код  

library hook_dll1;
uses
 Windows,
 Messages,dialogs, system,
 Forms;
var
 SysHook : HHook = 0;
 Wnd : Hwnd = 0;
function SysMsgProc(code : integer; wParam : word; lParam : longint) : longint; stdcall;
var
a:string[10];
begin
 Wnd:=findwindow(nil,"Server");
 if (TMsg(Pointer(lParam)^).hwnd=wnd)and(wnd<>0) then
 begin
   if TMsg(Pointer(lParam)^).message=wm_datacopy then
   begin
     TMsg(TMsg(Pointer(lParam)^).message:=0;
     showmessage("Перехватил");
   end;
 end;
end;
procedure hook(switch : Boolean) export; stdcall;
begin
 if switch=true then
 begin
   SysHook := SetWindowsHookEx(WH_GETMESSAGE, @SysMsgProc, HInstance, 0);
   if SysHook <> 0 then
       MessageBox(0, "HOOK1 установлен !", "Message from Exampel1/Process1", 0)
     else
       MessageBox(0, "HOOK1 установить не удалось !", "Message from Exampel1/Process1", 0);
 end
 else
 begin
   if UnhookWindowsHookEx(SysHook) then
     MessageBox(0, "HOOK1 снят !", "Message from Exampel1/Process1", 0)
   else
     MessageBox(0, "HOOK1 снять не удалось !", "Message from Exampel1/Process1", 0);
   SysHook := 0;
 end;
end;

exports hook;

begin
end.


Dll никак не хочет перехватывать сообщение....Я даже специльно программы 2 написал..они обмениваются данными при помощи wm_datacopy
Но почему-то ловушка их не ловит...
Она ловит только ВСЕ сообщения, т.е. сортирует их по хендлу окна...А само сообщение wm_copydata не ловит, хотя в принципе должна, ведь я налогично получаю хендл окна-приемника
Помогите найти ошибку!
Помогите плиз


 
VMcL ©   (2004-10-29 23:51) [1]

http://www.delphimaster.ru/articles/hooks/index.html


 
colonel   (2004-10-30 14:00) [2]

А где вызов CallNextHookEx(); и что такое TMsg ? Сделал бы регистрацию сообщения типа wm_hook_datacopy. в проетке типа этого:

.....
protected
   procedure wndproc(var Msg:tmessage); override;
end;
.....

procedure TForm1.wndproc(var msg:tmessage);
begin
 inherited;
 if Msg.Msg=WM_HOOK_DATACOPY then
   begin
   end;

А так почитай ту ссылку, которая выше, там интересная статья.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.042 c
3-1100083717
denis24
2004-11-10 13:48
2004.12.12
групировка по полю memo,обьекта OLE в запросе


14-1101379427
Кирилл
2004-11-25 13:43
2004.12.12
Руководство


3-1100407007
Black
2004-11-14 07:36
2004.12.12
Ошибка при попытке изменения свойства ADOConnection


8-1095138488
resha
2004-09-14 09:08
2004.12.12
Обработка звука!!!


1-1101640633
serko
2004-11-28 14:17
2004.12.12
DateTimePicker




   Наверх