簡體   English   中英

Windows 10是否具有用於LowLevelHooksTimeout的注冊表項

[英]Does Windows 10 have a registry entry for LowLevelHooksTimeout

我正在嘗試找到在Visual Studio 2015中調試C#時遇到的問題的解決方法。當應用程序進行調試時,當遇到斷點時,它將導致鼠標光標嚴重滯后。 這是因為應用程序注冊了鼠標和鍵盤的掛鈎。 當遇到斷點時,掛鈎將等待輸入,但是直到達到超時(〜5秒),它們才會收到輸入。

因此,我在網上找到了一些解決方案,但是如果不重新設計鈎子,就無法實現相對簡單的解決方案。 我嘗試為LowLevelHooksTimeout添加一個注冊表項,以查看是否可以在遇到斷點時使Windows更快地移至下一個鈎子事件,但這似乎沒有什么不同。

另外,使用原始輸入可能是唯一的方法,但需要一些工作。 有沒有人遇到這個問題,是否有偶然的解決方案。

https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/f6032ca1-31b8-4ad5-be39-f78dd29952da/hooking-problem-in-windows-7?forum=windowscompatibility

https://security.stackexchange.com/questions/78732/unregistering-keyboard-hooks-by-timeout-expiration

我結束了這個開源代碼: http : //www.codeproject.com/Articles/17123/Using-Raw-Input-from-C-to-handle-multiple-keyboard

它具有用C#實現的Raw Input API。 那里還有一個簡單的WPF應用程序,它可以提供設備信息,以及在您按鍵時提供的信息(這就是給定鏈接的屏幕快照中的內容)。 我使用了基礎代碼並將其集成到我的應用程序中。 例如:

if (RawInputHandler == null)
{
    RawInputHandler = RawInput.Instance;

    RawInputHandler.LoggingEvent += RawInputHandler_LoggingEvent;
    RawInputHandler.KeyPressed += RawInputHandler_KeyPressed;
    RawInputHandler.MousePressed += RawInputHandler_MousePressed;
}

同時,在事物的原始輸入端,每當我檢測到管道中有相關事件時,便會調用這些事件。 有一種稱為ProcessRawInput(Intpr)的方法,可在其中區分鼠標,鍵盤等。這是通過檢查API緩沖區頭中的硬件類型來完成的:

if (_rawBuffer.header.dwType == DeviceType.RIM_TYPE_MOUSE)
{
    // Do mouse stuff, invoke event
}

這很痛苦,但最終該API解決了使用鼠標/鍵盤掛鈎的調試恐懼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM