2011-12-19 54 views
0

我試圖用一些鍵綁定(F1-F12)來創建一個程序,它將在聚焦時(特別是在遊戲運行時)拿起按鍵。鍵盤鉤子沒有使用DLL?

無論如何檢測這些按鍵而不使用全局鉤子?我正在編程的語言(真正的工作室)沒有創建一個DLL(全局鉤子需要)的手段,再加上,我希望它與Mac(這是realstudio所做的)跨平臺。

+0

你使用什麼編程語言?如果這會有所幫助,我可以用一些示例代碼更新我的答案。 – 2011-12-19 13:36:03

回答

0

雖然正如klartex所說,低級別的鍵盤/鼠標鉤子不需要DLL(與所有其他類型的鉤子不同),但是對於你想要完成的任務來說,任何類型的鉤子肯定是矯枉過正的。

所有你需要的是RegisterHotKey function,它允許用戶註冊的任意鍵(或鍵的組合),其爲全系統的熱鍵。這可以滿足您即使在應用程序焦點不清的情況下也能夠按下按鍵的要求。

作爲獎勵,RegisterHotKey不需要DLL,也不像系統範圍的鉤子那樣「沉重」。掛鉤對性能有負面影響;你不應該看到RegisterHotKey

一旦通過調用該函數註冊了一個熱鍵,就可以在應用程序的窗口過程中處理WM_HOTKEY messages。完成之後,請確保您撥打UnregisterHotKey function以取消註冊您的應用程序以處理該熱鍵。

這裏唯一需要注意的文件中提到:

F12鍵保留在任何時候都調試器使用,所以它不應該被註冊爲熱鍵。即使在您未調試應用程序時,F12也會保留以防內核模式調試程序或即時調試程序駐留。

但是,如果您要安裝低級鍵盤掛鉤,同樣的問題將適用。 F12只是不是一個好的候選熱鍵,不管應用程序如何。如果你絕對必須使用它,風險自負。

+0

非常感謝您的回覆! :) 幸運的是,我不需要F12,但感謝您的支持。 非常感謝。與所有其他答覆一樣。 – lukus001 2011-12-19 15:14:21

+0

我知道這是一個老話題,但現在已經開始「完成」應用程序。 我已經設法使用註冊熱鍵,但它在我打算在期間使用的遊戲中不起作用?是否有任何理由不通過遊戲? – lukus001 2012-03-30 20:53:27