2012-04-11 47 views
1

是否有可能在沒有SendMessagePostMessage API的情況下將密鑰發送到程序?發送不帶SendMessage和PostMessage的密鑰

+0

確實有方法不涉及您使用這些特定的apis,但最終仍然會使用消息隊列發送密鑰。爲什麼不直接使用它們? – Cray 2012-04-11 13:21:57

+0

由於發送/發佈WM_CHAR消息非常簡單,我從來沒有嘗試過其他任何東西。 – 2012-04-11 13:23:28

回答

16

虛假輸入的官方方式不涉及直接發送或發佈Windows消息。相反,您打算撥打SendInput

當您使用SendInput時,它與實際按下真正的按鍵無法區分。當您調用SendInput虛假鍵盤輸入時,系統最終將消息發佈到創建具有鍵盤焦點的窗口的前臺線程的消息隊列中。

+0

「難以區分」:許多擁有高級bot保護的撲克客戶往往不同意:)。但通常,一個正常的程序不會有任何區別。 – Cray 2012-04-11 14:12:17

+0

@Cray撲克客戶端如何發現差異? – Alex 2012-05-05 13:37:19

+0

最後我在研究這個(比如幾年前),有很多關於GetAsyncKeyState的討論,以及SendInput如何欺騙這個函數。但這顯然是最簡單的檢查方法之一(它甚至是一個記錄的ring3函數,沒有什麼鬼鬼祟祟的),帽子比這更深。 – Cray 2012-05-05 17:38:53