看板 C_and_CPP 關於我們 聯絡資訊
我寫了一個小程式,模擬發送一個鍵盤訊息,再測試的時候是用遊戲程式當作目標視窗, 試過了幾個遊戲,卻發現,如果游標是在對話輸入欄,則可以正常的接收, 但是卻無法啟動技能快捷鍵。 例如:用以下的程式碼為例子, hWnd=::FindWindow(NULL,_T("萬王之王3:黛妮雅")); PostMessageA(hWnd,WM_KEYDOWN,0x31,0); 我發送了按下按鍵 "1" 的訊息給 "萬王之王3:黛妮雅" 這個遊戲程式, 如果當時我是正好在輸入對話訊息,則可以成功的模擬輸入, 但如果是在一般的狀態,卻沒辦法觸發快捷鍵1的效果。 原本以為是該遊戲有防止這種情況發生的功能,但是我用按鍵精靈測試, 卻可以成功的模擬輸入。 不知道有人是否能告知一下問題出在哪邊,還是說不應該用Post而要用Send? 另外,我在MSDN網站上有找到有一個SendKeys函式, 該網頁也有註明適用於Microsoft Visual Studio 2005, 但我搜尋過VS2005裡面的Include檔,並沒有找到這個函式,這是為什麼呢? PS:不知道這個有沒有違反版規,因為可以算是外掛的雛型, 如果有,請告知一下,我會自動刪文,感謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.129.39.100 ※ 編輯: sosokill 來自: 140.129.39.100 (04/11 05:36)
bugmens:可參考11605篇,文章代碼#183zHOD_ ,delphi ktop目前關站 04/11 06:13
bugmens:先給google備份文章http://0rz.tw/mbmW1 04/11 06:14
bugmens:google搜尋KbdClass又是driver的東西,結論:還是花錢好了 04/11 06:19
ray2501:keybd_event 04/11 07:20
ray2501:或者是使用 SendInput 04/11 07:21
ray2501:不要用 Message,用上面二個模擬 04/11 07:24
liangjr:keybd_event, mouse_event 04/11 07:44
tsaiminghan:可以用vs2005的spy看看你send的訊息和實際上的有什麼 04/11 09:27
tsaiminghan:差別 04/11 09:27
sosokill:但是使用Keybd_event和SendInput似乎都只能發送至當前的 04/11 14:59
sosokill:視窗或全部的視窗,可是我現在是想發送至指定視窗 04/11 14:59
sosokill:如果是配合SetForegroundWindow使用,感覺上又不怎好 04/11 15:00
sosokill:有沒有兩全其美的方法啊? 04/11 15:00
sunneo:SendMessage不好嗎? 可以發送到FindWindow得到的HWND 04/11 22:49
tsaiminghan:上面的說法是沒用,可能有擋。 04/11 23:54
sosokill:回樓上,會跟postmessage一樣的問題 04/11 23:54
ewn:如果SendMessage或PostMessage會被擋的話,那就inject dll 04/12 00:30