2016-05-12 84 views
0

我一直在線上搜索,但Google上的所有頂級搜索結果只能將我引向Java。這令人沮喪。在沒有窗口焦點的情況下在Windows上檢測按鍵

我想要做的是:製作一個監聽鍵盤事件的程序,而不是活動的程序。它必須至少在Windows 7上工作,使用C.

例如讓我說我有myprogram.exe和other.exe。我希望能夠同時運行它們,並專注於other.exe,然後按下按鍵,然後讓myprogram.exe在側面顯示屏上運行,並按下並按下它們。

如果有人鏈接到一個指南或信息,說明我應該用什麼來做到這一點,那將是盛大的。如果你可以自己寫一個更好的解釋,但我不介意只要它們相關,就通讀文檔。

我已經用C語言編寫了一個遊戲,用於監聽來自活動窗口的輸入,但是我不確定如何在窗口未聚焦時輪詢事件。

+2

你想要一個鍵盤記錄器,它通常使用窗口鉤子實現。 – MicroVirus

+1

你需要一個全局鉤子。更多信息在這裏:https://msdn.microsoft.com/en-gb/library/windows/desktop/ms644959%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396#wh_keyboardhook和一個例子在這裏:http ://ntcoder.com/bab/2007/06/12/wh_keyboard_ll/ –

+0

是[this](https://msdn.microsoft.com/en-us/library/windows/desktop/ms646268(v = vs.85) ).aspx)你在找什麼? – bluepinto

回答

1

如果您想要檢測其他進程中發生的'按鍵'事件,則應該執行Global Hook。您可以使用SetWindowsHookEx()爲鍵盤輸入事件定義回調函數。

請注意,回調函數必須在一個DLL中才能使其成爲Global Hook

因此,你的myprogram.exe應該鏈接一個DLL實現掛鉤。然後,myprogram.exe將能夠檢測到Windows上的任何鍵盤事件。

以下是一個很好的例子和解釋。 http://www.codeproject.com/Articles/1264/KeyBoard-Hooks

+0

感謝大家。所有幫助 – Aqo

相關問題