[英]How to make sure if global keyboard hook have been disconnected?
我使用了Stephen Toubs版本的全局鍵盤鈎子,在WIN 7環境中使用它。
它工作正常,然后它就停止接收擊鍵。
我在regedit中增加了超時值,但在一段時間后它仍然斷開連接。
問題是,如何檢測它是否已斷開連接以及如何將鈎子設置為再次激活?
沒有辦法知道(來自msdn ):
鈎子過程應該在比以下注冊表項中的LowLevelHooksTimeout值中指定的數據條目更短的時間內處理消息:HKEY_CURRENT_USER \\ Control Panel \\ Desktop
如果掛鈎過程超時,系統會將消息傳遞給下一個掛鈎。 但是,在Windows 7及更高版本中,無需調用即可靜默刪除掛鈎。 應用程序無法知道鈎子是否被移除。
解決此問題的一種方法是保留收到的最后一條消息的時間戳,並使用后台計時器在從上一條消息過去一段時間后添加新的掛鈎。
此外,為了最大限度地減少這種情況,您的鈎子處理方法應該只收集最少的所需信息,並將數據的實際處理留給另一個線程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.