Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.02.10;
Скачать: CL | DM;

Вниз

Запретить передачу фокуса окну по которому кликаешь   Найти похожие ветки 

 
Igor Zorkov   (2007-11-01 21:32) [0]

Блокирую среднюю кнопку мыши, а как запретить передачу фокуса окну по которому кликаешь?

library MousePrevent;

uses
Windows,
Messages,
Controls,
SysUtils;

Var
SysHook: HHook = 0;
GWWM_MBUTTONDOWN: Cardinal;
GWWM_MBUTTONUP: Cardinal;

function SysMsgProcM(Code:Integer; WParam:LongInt; LParam:LongInt): LongInt; stdcall;
var
Msg:TMessage;
Wnd: HWND;
begin
if (Code = HC_ACTION) then
begin
 Wnd:= FindWindow(nil, "Form1");
 case TMsg(Pointer(LParam)^).Message of
   WM_MBUTTONDOWN:
   begin
     SendMessage(Wnd, GWWM_MBUTTONDOWN, 0, 0);
     TMsg(Pointer(LParam)^).Message:= WM_NULL;
   end;
   WM_MBUTTONUP:
   begin
     SendMessage(Wnd, GWWM_MBUTTONUP, 0, 0);
     TMsg(Pointer(LParam)^).Message:= WM_NULL;
   end else
     Result:= CallNextHookEx(SysHook,Code,WParam,LParam);
  end;
end;
end;

procedure RunStopPreventHookM(State: Boolean) export; stdcall;
begin
if State = true then
begin
 SysHook := SetWindowsHookEx(WH_GETMESSAGE, @SysMsgProcM, HInstance, 0);
end else
begin
 UnhookWindowsHookEx(SysHook);
 SysHook:= 0;
end;
end;

exports RunStopPreventHookM;

begin
GWWM_MBUTTONDOWN:= RegisterWindowMessage ("GWWM_MBUTTONDOWN");
GWWM_MBUTTONUP:= RegisterWindowMessage ("GWWM_MBUTTONUP");
end.

<Цитата>


 
Leonid Troyanovsky ©   (2007-11-01 21:44) [1]


> Igor Zorkov   (01.11.07 21:32)  

> Блокирую среднюю кнопку мыши, а как запретить передачу фокуса
> окну по которому кликаешь?

И чего, клик средней кнопки передает фокус?

--
Regards, LVT.


 
Igor Zorkov ©   (2007-11-01 21:50) [2]


> Leonid Troyanovsky ©   (01.11.07 21:44) [1]


Я имел ввиду окно по которому кликаешь выходит не передний план, как сделать что бы оно там и оставалось, то есть не меняло свой Z order


 
Leonid Troyanovsky ©   (2007-11-01 22:01) [3]


> Igor Zorkov ©   (01.11.07 21:50) [2]

> Я имел ввиду окно по которому кликаешь выходит не передний
> план

Т.е., кликнутое средней кнопкой окно выходит на первый план.
До, после или во время установки хука?

--
Regards, LVT.


 
Igor Zorkov ©   (2007-11-01 22:06) [4]


> Leonid Troyanovsky ©   (01.11.07 22:01) [3]


Нравиться издеваться?


 
Leonid Troyanovsky ©   (2007-11-01 22:21) [5]


> Igor Zorkov ©   (01.11.07 22:06) [4]

> Нравиться издеваться?

Нет, мы тут просто в гестапо играем.

Да, на чем мы остановились?

--
Regards, LVT.


 
Igor Zorkov ©   (2007-11-02 11:00) [6]


>Leonid Troyanovsky ©   (01.11.07 22:01) [3]


До установки хука, включаешь компьютер и появляеться окно с заголовком - по мне кликнули мышию.

Leo
> nid Troyanovsky ©   (01.11.07 22:21) [5]


Ну вот, собственно жму я кнопку мыши а окно сволочь выходит на передний план


 
Leonid Troyanovsky ©   (2007-11-02 12:33) [7]


> Igor Zorkov ©   (02.11.07 11:00) [6]

> До установки хука, включаешь компьютер и появляеться окно
> с заголовком - по мне кликнули мышию.

Кто ж по нему кликнул, если компьютер только включили.
И что за программа создает это окно. Вирус, троян?

Ты чего-то не договариваешь, Герасим.

См. также
http://ln.com.ua/~openxs/articles/smart-questions-ru.html

--
Regards, LVT.


 
Igor Zorkov ©   (2007-11-02 13:09) [8]

Пыюсь написать компонент типа TCPMouseHook, но ума нет совсем.

library MouseHook;

uses
 Windows, Messages, Forms;

const
 MMFName: PChar = "MMF";

type
 PGlobalDLLData = ^TGlobalDLLData;
 TGlobalDLLData = packed record
   SysHook: HWND;
   Wnd: HWND;
 end;

var
 GlobalData: PGlobalDLLData;
 MMFHandle: THandle;
 MMWM_MBUTTONDOWN: Cardinal;
 MMWM_MBUTTONUP: Cardinal;
 MMWM_MBUTTONDBLCLK: Cardinal;
 MMWM_NCMBUTTONDOWN: Cardinal;
 MMWM_NCMBUTTONUP: Cardinal;
 MMWM_NCMBUTTONDBLCLK: Cardinal;

function SysMsgProc(Code: Integer; wParam: Word; lParam: Longint): Longint; stdcall;
begin
 if Code = HC_ACTION then
 begin
   case TMsg(Pointer(lParam)^).message of
     WM_MBUTTONDBLCLK:
       SendMessage(GlobalData^.Wnd, MMWM_MBUTTONDBLCLK, 0, 0);
     WM_NCMBUTTONDOWN:
       SendMessage(GlobalData^.Wnd, MMWM_NCMBUTTONDOWN, 0, 0);
     WM_NCMBUTTONUP:
       SendMessage(GlobalData^.Wnd, MMWM_NCMBUTTONUP, 0, 0);
     WM_NCMBUTTONDBLCLK:
       SendMessage(GlobalData^.Wnd, MMWM_NCMBUTTONDBLCLK, 0, 0);
   end;
 end else
 CallNextHookEx(GlobalData^.SysHook, Code, wParam, lParam);
end;

function StartMouseHook(State: Boolean; Wnd: HWND): Boolean; export; stdcall;
begin
 Result:= False;
 if State = True then
 begin
   GlobalData^.SysHook:= SetWindowsHookEx(WH_GETMESSAGE, @SysMsgProc, HInstance, 0);
   GlobalData^.Wnd:= Wnd;
   if GlobalData^.SysHook <> 0 then
     Result:= True;
 end
 else
 begin
   UnhookWindowsHookEx(GlobalData^.SysHook);
   Result:= False;
 end;
end;

function StopMouseHook(): Boolean; export; stdcall;
begin
 Result:= False;
 UnhookWindowsHookEx(GlobalData^.SysHook);
 if GlobalData^.SysHook = 0 then
   Result:= True;
end;

procedure OpenGlobalData();
begin
 MMWM_MBUTTONDOWN:= RegisterWindowMessage("MMWM_MBUTTONDOWN");
 MMWM_MBUTTONUP:= RegisterWindowMessage("MMWM_MBUTTONUP");
 MMWM_MBUTTONDBLCLK:= RegisterWindowMessage("MMWM_MBUTTONDBLCLK");
 MMWM_NCMBUTTONDOWN:= RegisterWindowMessage("MMWM_NCMBUTTONDOWN");
 MMWM_NCMBUTTONUP:= RegisterWindowMessage("MMWM_NCMBUTTONUP");
 MMWM_NCMBUTTONDBLCLK:= RegisterWindowMessage("MMWM_NCMBUTTONDBLCLK");
 MMFHandle:= CreateFileMapping(INVALID_HANDLE_VALUE, nil, PAGE_READWRITE, 0, SizeOf(TGlobalDLLData), MMFName);
 GlobalData:= MapViewOfFile(MMFHandle, FILE_MAP_ALL_ACCESS, 0, 0, SizeOf(TGlobalDLLData));
 if GlobalData = nil then
   CloseHandle(MMFHandle);
end;

procedure CloseGlobalData();
begin
 UnmapViewOfFile(GlobalData);
 CloseHandle(MMFHandle);
end;

procedure DLLEntryPoint(Reason: DWord); stdcall;
begin
 case Reason of
   DLL_PROCESS_ATTACH: OpenGlobalData;
   DLL_PROCESS_DETACH: CloseGlobalData;
 end;
end;

exports StartMouseHook, StopMouseHook;

begin
 DLLEntryPoint(DLL_PROCESS_ATTACH);
end.


 
Anatoly Podgoretsky ©   (2007-11-02 13:24) [9]

> Leonid Troyanovsky  (02.11.2007 12:33:07)  [7]

> Ты чего-то не договариваешь, Герасим.

Му, му


 
Igor Zorkov ©   (2007-11-02 13:31) [10]


> Anatoly Podgoretsky ©   (02.11.07 13:24) [9]


Не убий!!!


 
Leonid Troyanovsky ©   (2007-11-02 13:57) [11]


> Igor Zorkov ©   (02.11.07 13:09) [8]

> Пыюсь написать компонент типа TCPMouseHook, но ума нет совсем.

Приведи вопрос в соответствие с
http://ln.com.ua/~openxs/articles/smart-questions-ru.html

Или в "Начинающим", может там кто сопли и утрет.

--
Regards, LVT.


 
Igor Zorkov ©   (2007-11-02 14:18) [12]


> Leonid Troyanovsky ©   (02.11.07 13:57) [11]


Да читал я, когда ума хватит сформулировать правильно вопрос обращюсь, а пока .....



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

Текущий архив: 2008.02.10;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.019 c
15-1199465263
DmT
2008-01-04 19:47
2008.02.10
Деление столбиком


6-1179287240
-=Germe$=-
2007-05-16 07:47
2008.02.10
HTTP запрос средствами WinSock


15-1200229049
cr@nk
2008-01-13 15:57
2008.02.10
DelForEx для Delphi 2007


2-1200566050
asdf
2008-01-17 13:34
2008.02.10
Структура


6-1180064868
Strang
2007-05-25 07:47
2008.02.10
Почтовый сервер