2011-08-20 31 views
0

我想獲得一個按鍵信號,而不使用像getasynckeystate那樣的鉤子或鍵盤監控功能,這似乎過度地解決了我的問題。我需要一個可以在全局(在其創建的窗口之外)工作的函數,例如GetCursorPos,但是對於按鍵(按PageUp鍵)來觸發一些自定義事件。感謝您提供任何指導。尋找一個類似於GetAsyncKeyState或GetCursorPos的功能

+3

你必須使用鉤子。說你不想使用*設計的winapi功能來做你所需要的東西,不會讓你得到任何地方。一個低級的鍵盤鉤子很容易起來,它不是一個全局鉤子。 –

+0

我同意@Hans。有一個簡單的方法來做到這一點:它被稱爲鉤子:) – noelicus

回答

0

我相信DirectInput可以做到這一點。很久以前,我的產品團隊有一個語音應用程序,無論其他應用程序是否在前臺,我們的應用程序都可以使用「即按即說」鍵。

如果內存服務器正確,我們使用DirectInput與專用線程偵聽DInput來發送HEVENT句柄。當偶數線程醒來時,它會要求直接輸入按鍵。如果這是我們的熱門關鍵,我們取消了麥克風的靜音(並在發生事件時將其靜音)。

大多數DirectInput文檔已經從MSDN中取消。 (由XInput取代)。我不知道xinput是否可以完成同樣的事情。但是如果你能找到一個傳統的DirectX SDK包(比如DirectX 8 SDK),那麼包含的文檔應該包含DirectInput所需的全部內容。