hook те в помощь Добавлено @ 00:56 | Код | ibrary Mouse2Hook; Uses Windows,Messages, Controls; const WM_MESSAGE_FROM_MY_HOOK = WM_USER + $AA;
Var SysHook:HHook=0;
Function SysMsgProc(Code:Integer; WParam:LongInt; LParam:LongInt):LongInt; stdcall; Var Msg:TMessage; Begin IF Code=HC_ACTION then Case TMsg(Pointer(LParam)^).Message OF WM_RBUTTONDOWN,WM_RBUTTONUP,WM_RBUTTONDBLCLK: begin TMsg(Pointer(LParam)^).Message:=WM_NULL; PostMessage(FindWindow('TForm1',nil), WM_MESSAGE_FROM_MY_HOOK, Mouse.CursorPos.X, Mouse.CursorPos.Y); end; else Result:=CallNextHookEx(SysHook,Code,WParam,LParam); End; end;
procedure Hook(Flag:Boolean); export; stdcall; Begin IF Flag then SysHook:=SetWindowsHookEx(WH_GETMESSAGE,@SysMsgProc,HInstance,0) Else Begin UnhookWindowsHookEx(SysHook); //SysHook:=0; End; End;
exports Hook;
{$R *.res}
begin end.
|
код проги
| Код | ------------------- const WM_MESSAGE_FROM_MY_HOOK = WM_USER + $AA;
type MyProcType = procedure (Flag: Boolean); stdcall; ---------------- private procedure WM_MSG_FROM_HOOK(var msg: TMessage); message WM_MESSAGE_FROM_MY_HOOK; ------------------------- procedure TForm1.WM_MSG_FROM_HOOK(var msg: TMessage); begin //SetForegroundWindow(application.Handle); делай чё те надо тут) //PostMessage(Handle,WM_NULL,0,0); end;
| Добавлено @ 01:00 правда это везде будет похать не тока на раб столе! Но для раб стола мож переделать сделав проверку или ещё чёнить! думаю справишся сам) |