全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1812
推到 Plurk!
推到 Facebook!

HOOK~問題請教~~

尚未結案
hoby1234
一般會員


發表:6
回覆:11
積分:3
註冊:2005-03-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-23 13:25:29 IP:211.73.xxx.xxx 未訂閱
var AHandle : THandle; begin AHandle := Application.Handle; SendMessage(AHandle, WM_MouseMove, 0, LOWORD(752) HIWORD(528)); end; ↑↑↑↑↑↑↑滑鼠不會動到我指定的地方↑↑↑↑↑↑請問我有用錯? 還有我找了一個HOOK範例~~請問我要如何~讓他透過攔截到NUM LOCK鍵的時候~ 將上面的訊息送到我指定的程式~~下面的HOOK程式請會的人幫我組合看看~~我稿的快啪了~~ var hhook:Integer; 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)^; if msg.message=WM_LBUTTONDOWN then begin form1.Memo1.Lines.add(inttostr(msg.hwnd) '':'' inttostr(msg.paramL) ''-'' inttostr(msg.paramH)); end; end; end; procedure TForm1.Button1Click(Sender: TObject); begin hHook:=SetwindowsHookEx(WH_JOURNALRECORD,hookProc,HInstance,0); end; procedure TForm1.Button2Click(Sender: TObject); begin UnHookWindowsHookEx(hHook); hHook:=0; end; procedure TForm1.FormDestroy(Sender: TObject); begin if hHook <> 0 then begin UnHookWindowsHookEx(hHook); hHook:=0; end; end;
wyndog
資深會員


發表:7
回覆:362
積分:348
註冊:2004-10-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-23 14:14:48 IP:60.248.xxx.xxx 未訂閱
引言:
var
  AHandle : THandle;
begin
  AHandle := Application.Handle;
  SendMessage(AHandle, WM_MouseMove, 0, LOWORD(752) HIWORD(528));
end;
改用這個 Mouse_Event(MOUSEEVENTF_ABSOLUTE MOUSEEVENTF_MOVE, dX, dY, 0, 0);
hoby1234
一般會員


發表:6
回覆:11
積分:3
註冊:2005-03-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-23 20:05:17 IP:211.73.xxx.xxx 未訂閱
引言:
引言:
var
  AHandle : THandle;
begin
  AHandle := Application.Handle;
  SendMessage(AHandle, WM_MouseMove, 0, LOWORD(752) HIWORD(528));
end;
改用這個 Mouse_Event(MOUSEEVENTF_ABSOLUTE MOUSEEVENTF_MOVE, dX, dY, 0, 0);
我想使用快速鍵啟動這程式~~用那行? 我要在一個全螢幕的視窗下~讓我的程式背景執行~~好像有所謂的焦點問題??
wyndog
資深會員


發表:7
回覆:362
積分:348
註冊:2004-10-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-03-23 23:04:53 IP:61.62.xxx.xxx 未訂閱
引言: Mouse_Event(MOUSEEVENTF_ABSOLUTE MOUSEEVENTF_MOVE, dX, dY, 0, 0);
這是讓你的滑鼠游標移到你指定的位置
jest0024
高階會員


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-03-25 02:27:06 IP:211.74.xxx.xxx 未訂閱
Mouse_Event 直接模擬滑鼠動作!
SendMessage 傳送訊息到指定的視窗(背景使用)    var
  Pos:TSmallPoint;
begin
  Pos.x:=Trunc(Random*Width);
  Pos.y:=Trunc(Random*Height);
  SendMessage(Handle,WM_MOUSEMOVE,0,Integer(Pos));
  //SendMessage 可改用PostMessage or PostThreadMessage 或其他代替..
  //至於詳細說明請參閱Help
  //註:他是送出一個WM_MOUSEMOVE訊息給Handle,並不是移動滑鼠到指定位置!
end;      if(Msg.Message = WM_KEYDOWN)and(Byte(Msg.paramL)=VK_NUMLOCK)then ...
發表人 - jest0024 於 2005/03/25 03:12:57
hoby1234
一般會員


發表:6
回覆:11
積分:3
註冊:2005-03-16

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-03-25 17:46:51 IP:211.73.xxx.xxx 未訂閱
上面各位大大~~我感謝一個先~~~ 我測試之後~~我發覺~~滑鼠在遊戲中完全沒反應~~ 我甚至在開遊戲前就先讓滑鼠在那邊跑了~~ 但是一進遊戲後~~滑鼠就沒反應了~~這是為什麼~~?? 因為是DX遊戲的關西? 這要怎解決~~要用什麼函數~~或者哪裡有範例可查~~
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-03-30 17:33:00 IP:61.222.xxx.xxx 未訂閱
如果使用 SendMessage Hanldle 應為遊戲或對象的 Window Handle 可以利用 FindWindow 找到. 否則 Mouse_Event 就沒這各問題. 另外 本身自己程式執行時,焦點會在自身視窗上. 因此也要將焦點轉移至遊戲視窗 如果您要寫外掛的話? HOOk 一般用來接管訊息 跟您的需求不是很.....
系統時間:2024-04-29 12:01:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!