2
我正在研究需要記錄和回放擊鍵的程序。主進程作爲服務運行,所以它需要一個配置程序來記錄擊鍵。如何確定另一個進程(Windows)的鍵盤佈局?
當系統默認的鍵盤佈局是(比如說)英語,並且用戶的鍵盤佈局是德語時,會出現問題。用戶在配置界面輸入一個'ü'字符,該字符被正確記錄和存儲。
現在用戶運行記事本並嘗試播放按鍵,這是由服務的子級完成的。當轉換輸入到SendInput
時,我們調用VkKeyScan
,然後告訴我們無法在此鍵盤上重現該字符(請記住默認的鍵盤佈局是英語)。
我最想做的是同步服務的鍵盤佈局和當前的前臺應用程序,這樣服務可以重現用戶可以用鍵盤輸入的任何字符。 GetKeyboardLayout
僅適用於當前進程。這必須在32位和64位上運行,所以消息鉤是...不是首選:)。
這不會從服務中工作(當然,它可以從交互式服務中使用,但不推薦使用交互式服務,並且在新版本的Windows下不起作用)。 – jdigital 2009-06-05 18:11:12