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

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

Не передавать сообщение мыши


inferno ©   (2009-01-11 09:49:00) 

Здравствуйте.
Есть глобальный хук WH_MOUSE в dll, обработчик передает сообщения в программу SendMessage(FindWindow(nil,'Pipetka'),WM_USER+2,wParam,lParam);
Задача такая: в определенной ситуации нужно, чтобы сообщение передалось в программу, но мышь не сработала, т.е. чтобы перехваченное мной сообщение обработалось моим обработчиком но не передалось дальше.

function ms_hook(code : integer; wParam : word; lParam : longint) : longint; stdcall;
begin
 if code >=0 then
 begin
    SendMessage(FindWindow(nil,'myForm'),WM_USER+2,wParam,lParam);
 end;
 if (условие) then Result:= CallNextHookEx(MouHook, Code, wParam, lParam)
 else //!!!!...........!!!!
end;


inferno   (2009-01-13 08:19:00) [1]

Спасибо что ткнули носом ))


Leonid Troyanovsky   (2009-01-11 13:12:00) [2]


> inferno   (11.01.09 11:23) [2]

> Спасибо, но, если я правильно понял, то такой вариант я
> уже пробовал.

If the hook procedure processed the message, it may return a nonzero
value to prevent the system from passing the message to the target window
procedure
.

--
Regards, LVT.


inferno   (2009-01-11 11:23:00) [3]

Спасибо, но, если я правильно понял, то такой вариант я уже пробовал.

function ms_hook(code : integer; wParam : word; lParam : longint) : longint; stdcall;
begin
 if code >=0 then
 begin
    SendMessage(FindWindow(nil,'MyForm'),WM_USER+2,wParam,lParam);
 end;
 { Пытаемся передать сообщение дальше по цепочке hook-ов. }
 if ((wParam=WM_LBUTTONDOWN) or (wParam=WM_NCLBUTTONDOWN) and (MouEnab=false) then
   Result:=0
   else Result:= CallNextHookEx(MouHook, Code, wParam, lParam);
end;


Сергей М.   (2009-01-11 11:15:00) [4]


> inferno


В справке черным по белому написано:

Return Values

To enable the system to process the message, the return value must be zero. To discard the message, the return value must be a nonzero value.


Наверх

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