線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2459
推到 Plurk!
推到 Facebook!

HOOK與PostMessage、SendMessage模擬問題

尚未結案
kamiche
一般會員


發表:5
回覆:5
積分:2
註冊:2003-04-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-05-01 06:56:02 IP:61.223.xxx.xxx 未訂閱
這幾天在論壇上看到HOOK功能,小弟自己研究一會後發現有些地方搞不太清楚,利用SetwindowsHookEx建立HOOK後,使用PostMessage、SendMessage..等等模擬滑鼠按鍵及鍵盤動作均不會被HOOK攔截,請問我該怎麼用程式模擬按鍵被HOOK攔截到    //======================================================= unit Unit1;    interface    uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   Dialogs, StdCtrls, ExtCtrls;    type   TForm1 = class(TForm)     Button1: TButton;     Button2: TButton;     Memo1: TMemo;     Timer1: TTimer;     procedure Button1Click(Sender: TObject);     procedure Button2Click(Sender: TObject);     procedure FormDestroy(Sender: TObject);     procedure Timer1Timer(Sender: TObject);   private     { Private declarations }   public     { Public declarations }   end;    var   Form1 : TForm1;   hHook     : Integer ;   TemphHook : Integer ;   IsHotkey : Boolean ;   Canplay  : Integer ;   EventArr : EVENTMSG ;   bDelay   : Bool;   DelayTime : LongInt ;   TempMsg : TEventMsg; implementation    {$R *.dfm}    function HookProc(iCode : Integer; wParam : wParam ;lParam : lParam):LRESULT;stdcall; var  msg : TEventMsg; begin  Result:=0;  if iCode < 0 then   Result := CallNextHookEx(hHook,iCode,wParam,lParam)  else if icode = HC_ACTION then  begin   msg:= pEventMSG(lParam)^;   Case msg.message of   WM_LBUTTONDOWN : begin                     form1.Memo1.Lines.add(inttostr(msg.hwnd)+':'+                                           inttostr(msg.paramL)+'-'+                                           inttostr(msg.paramH)+'WM_LBUTTONDOWN');                    End ;   WM_MBUTTONDOWN : Begin                     Ishotkey := true ;                     DelayTime := 0 ;                     Tempmsg := msg ;                     form1.Memo1.Lines.add(inttostr(msg.hwnd)+':'+                                           inttostr(msg.paramL)+'-'+                                           inttostr(msg.paramH)+'WM_MBUTTONDOWN');                    End ;   WM_KEYDOWN : Begin                 if tagMSG(Ptr(lParam)^).wParam = VK_RETURN then                    form1.Memo1.Lines.add('VK_RETURN');                End ;   End ;  end; end;    procedure TForm1.Button1Click(Sender: TObject); begin  hHook := SetwindowsHookEx(WH_JOURNALRECORD  , hookProc, HInstance, 0); end;    procedure TForm1.Button2Click(Sender: TObject); begin  if hHook <> 0 then  begin     UnHookWindowsHookEx(hHook);     hHook := 0;  end; end;    procedure TForm1.FormDestroy(Sender: TObject); begin  if hHook <> 0 then  begin     UnHookWindowsHookEx(hHook);     hHook := 0;  end; End;    Procedure DoSomething; Begin   SendMessage(TempMsg.hwnd, WM_CHAR, VK_RETURN, 0);   DelayTime := GetCurrentTime ; End ;    procedure TForm1.Timer1Timer(Sender: TObject); begin  if IsHotkey then  if (GetCurrentTime - Delaytime) > 3000 then Begin   DoSomething ;  End ; end; end. 
 
 
 
jest0024
高階會員


發表:11
回覆:310
積分:224
註冊:2002-11-24

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-05-01 12:11:23 IP:203.67.xxx.xxx 未訂閱
試試mouse_event,keybd_event函數看看唄 想買台TPC..TTAB-B12D
kamiche
一般會員


發表:5
回覆:5
積分:2
註冊:2003-04-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-05-02 06:33:18 IP:61.223.xxx.xxx 未訂閱
感謝 jest0024大大 另外問一個問題就是有甚麼方法可以把Mouse_event、Keybd_event及SetwindowsHookEx這些功能關閉,我再一個遊戲實行後實行我的程式都沒有反應,請教大家它是用甚麼方法可以辦到這種效果
系統時間:2024-05-22 4:46:17
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!