繁体   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