Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2008.02.10;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.099 c
2-1200290731
Dana
2008-01-14 09:05
2008.02.10
111


15-1199978159
vajo
2008-01-10 18:15
2008.02.10
Как подключить интернет в Win Vista Busines?


2-1200403940
Elec3C
2008-01-15 16:32
2008.02.10
Хук на запуск или завершение прог.


2-1200669758
savyhinst
2008-01-18 18:22
2008.02.10
TCompressionStream


2-1200685401
MZP
2008-01-18 22:43
2008.02.10
Обработка клика мыши





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский