2010-11-01 113 views
0

嘿。 我不知道這是否可能,但值得一試。假設有一款不使用鼠標的第三方賽車遊戲。有沒有辦法讓我創建一個Windows窗體應用程序,該應用程序偵聽鼠標點擊並將相應的按鍵傳送到遊戲/活動窗口(例如,左鍵點擊會發送'向上箭頭'鍵來加速右鍵點擊會通過發送'向下箭頭'鍵)。我查看了SendKeys方法,但一旦遊戲成爲活動窗口,它就不起作用。有任何想法嗎?謝謝發送密鑰到活動窗口

回答

2

如果遊戲使用DirectInput來讀取密鑰,那麼SendKeys將無法工作,因爲DI在驅動程序級別工作,並且SendKeys/SendInput在API級別工作,這對於遊戲來說可能太「高」。你可以將Hook轉換成DirectInput,併發送它的命令,但它不會成爲一個單行版本,如果你是DirectX新手,你不會覺得它有趣。

+0

我不介意通過互操作水平低。但是,還有另一種方法可能比DirectInput的級別更低嗎?即Windows是否有一個本地命令可以被訪問發送給? – XSL 2010-11-02 01:12:59

+0

directX會比interop低。據我所知,它是訪問硬件和其他任何設備的最簡單的方法,而且你在設備驅動程序領域。如果我錯了,我確定別人會提供足夠快的答案。雖然遊戲可能不會使用directX,但幾乎所有遊戲都可以。您還可以查看「SendMessage WM_CHAR」,這比任何DX解決方案更容易測試 – jasper 2010-11-02 01:44:06

1

我不知道它是否可行,如果可能,但直觀上,我會檢查是否有某種適用於C#的AutoIt庫。

據我所知,AutoIt在向遊戲發送按鍵事件時沒有問題。 有兩種將AutoIt整合到C#的方法存在於互聯網上,但到目前爲止,我還沒有嘗試過其中之一。

不過你可以給它一個鏡頭 http://www.lancelarsen.com/Blog/tabid/72/EntryId/48/AutoIt-C-Helper-Library.aspx