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

關於hook(紀錄、與重播鍵盤滑鼠操作消息)

缺席
sb055665
一般會員


發表:24
回覆:25
積分:14
註冊:2006-07-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-04-23 22:07:49 IP:59.117.xxx.xxx 訂閱
請問各位大大 我在站上尋找到相關分享
紀錄(WH_JOURNALRECORD)、播放(WH_JOURNALPLAYBACK)
我想實現在不同電腦:
1.一台紀錄Mouse Keybard Event
2.利用 Socket傳送紀錄的MessageEvent 到另一台電腦
3.播放MessageEvent
目前已完成,但是發現當中播放的時候,必須要一直稍微移動滑鼠觸發,才有辦法完整播放那些接收到的Message
我想請問的事,有沒有什麼辦法可以讓他一直觸發,不用一直移動滑鼠??

以下為紀錄的Code
<textarea class="cpp" rows="10" cols="60" name="code">LRESULT WINAPI HookProc(int iCode, WPARAM wParam, LPARAM lParam) { recOK=1; int Result=0; if (iCode < 0) Result = CallNextHookEx(hHook,iCode,wParam,lParam); else if (iCode == HC_SYSMODALON) recOK=0; else if (iCode == HC_SYSMODALOFF) recOK=1; else if ((recOK>0) && (iCode == HC_ACTION)) { EventArr[EventLog]=(*(PEVENTMSGMSG)lParam); EventLog ; if (EventLog>=1000) { UnhookWindowsHookEx(hHook); } } return Result; } //------------------------------------------------------ void __fastcall TForm1::Button1Click(TObject *Sender) { EventLog=0; //建立鍵盤滑鼠操作消息紀錄鏈 hHook=SetWindowsHookEx(WH_JOURNALRECORD, (HOOKPROC)HookProc, GetModuleHandle(NULL), 0); Button2->Enabled=TRUE; Button1->Enabled=FALSE; } </textarea>

以下為播放
<textarea class="cpp" rows="10" cols="60" name="code">LRESULT WINAPI PlayProc(int iCode, WPARAM wParam, LPARAM lParam) { int canPlay=1; int Result=0; if (iCode < 0) //必須將消息傳遞到消息鏈的下一個接受單元 Result = CallNextHookEx(hPlay, iCode, wParam, lParam); else if (iCode == HC_SYSMODALON) canPlay=0; else if (iCode == HC_SYSMODALOFF) canPlay=1; else if ((canPlay ==1 )&&(iCode==HC_GETNEXT)) { if (bDelay) { bDelay=FALSE; Result = EventArr[PlayLog].time - EventArr[PlayLog - 1].time; if (Result < 0) Result = 0; } (*(PEVENTMSGMSG)lParam) = EventArr[PlayLog]; } else if ((canPlay == 1)&&(iCode == HC_SKIP)) { bDelay = TRUE; PlayLog ; } if (PlayLog>=evenLog) { UnhookWindowsHookEx(hPlay); } return Result; hPlay=SetWindowsHookEx(WH_JOURNALPLAYBACK, (HOOKPROC)PlayProc, GetModuleHandle(NULL), 0); } //---------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { //hHook=SetWindowsHookEx(WH_JOURNALRECORD, (HOOKPROC)HookProc, GetModuleHandle(NULL), 0); PlayLog=0; hPlay=SetWindowsHookEx(WH_JOURNALPLAYBACK, (HOOKPROC)PlayProc, GetModuleHandle(NULL), 0); } </textarea>
編輯記錄
sb055665 重新編輯於 2007-04-24 10:38:38, 註解 無‧
sb055665 重新編輯於 2007-04-24 10:46:39, 註解 無‧
sb055665 重新編輯於 2007-04-24 10:46:56, 註解 無‧
sb055665 重新編輯於 2007-04-24 10:51:51, 註解 無‧
sb055665 重新編輯於 2007-04-24 10:53:05, 註解 無‧
sb055665 重新編輯於 2007-04-24 10:53:42, 註解 無‧
sb055665 重新編輯於 2007-04-24 10:53:43, 註解 無‧
sb055665 重新編輯於 2007-04-24 10:55:14, 註解 無‧
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-04-24 10:21:23 IP:122.124.xxx.xxx 未訂閱
PO程式碼的方式請參考版規說明,煩請配合謝謝您的合作
sb055665
一般會員


發表:24
回覆:25
積分:14
註冊:2006-07-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-04-24 12:34:23 IP:220.135.xxx.xxx 訂閱
真的沒人可以給我一些建議嗎?麻煩各位先進幫幫忙,這個需求有點像是遠端模擬鍵盤、滑鼠 麻煩大家!謝謝!
系統時間:2024-04-26 23:16:50
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!