Текущий архив: 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.48 MB
Время: 0.043 c