我想將從android客戶端接收到的鼠標和鍵盤輸入發送到在Windows上運行的遊戲。 SendInput
適用於我迄今爲止工作過的幾乎所有的遊戲。但是對於SendInput
來說,遊戲必須是前臺窗口。SendInput到背景窗口
爲了解決這個問題,我使用了PostMessage(hwnd,...)
,讓hwnd處理遊戲窗口。但是,如果遊戲使用DirectInput,則這不起作用。這通過掛鉤GetDeviceState
解決。現在我開始研究的另一個遊戲是使用WM_INPUT
或原始輸入,我必須創建原始輸入才能使其工作。
根據該MSDN Article
DirectInput的是一組抽象 系統上的輸入設備的API調用。在內部,DirectInput創建第二個線程來讀取WM_INPUT數據,使用DirectInput API將比直接讀取WM_INPUT增加更多開銷 。
directInput使用WM_INPUT。
的SendInput函數插入在輸入結構 事件串聯到鍵盤或鼠標輸入流。這些事件不是 與用戶(使用鍵盤或鼠標)或通過調用keybd_event, mouse_event或其他SendInput調用插入 插入的其他鍵盤或鼠標輸入事件。
因此SendInput也提供了抽象。
我只需要將輸入發送到獨立的應用程序,即使其窗口未聚焦。這樣我就可以一次向多個遊戲發送輸入。有什麼方法可以使用像SendInput這樣的更高級別的API調用來實現這一點嗎?這可以通過SendInput完成嗎?有沒有任何C/C++庫?
遊戲做了很多嘗試和防止這種情況,原因是顯而易見的。我會考慮使用arduino板來模仿鍵盤。 – Matt
@Matt SendInput本身可以很好地工作,只有它只能在聚焦窗口上工作的缺點。 – SMUsamaShah
如果您查看[SendInput]的參數(https://msdn.microsoft.com/en-us/library/windows/desktop/ms646310.aspx),應該馬上明白,您無法控制,輸入的地方。沒有更高層次的API來完成這個工作,PostMessage是錯誤的縮影。 downvote的原因:換句話說,你已經是第10萬個成員提出這個問題了:它*「不顯示研究努力」*。 – IInspectable