Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

О перехвате сообщений [D6, WinXP]


Redhopter ©   (2004-10-29 23:00:00) 

Здравствуйте товарищи!!!!
Помогите найти ошибку в 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 не ловит, хотя в принципе должна, ведь я налогично получаю хендл окна-приемника
Помогите найти ошибку!
Помогите плиз


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

А где вызов 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;

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


VMcL   (2004-10-29 23:51:00) [2]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо