1
2
|
2
3
有趣的是,在我写的时候,使用WH\u MOUSE \u LL的代码做得很好(没有鼠标冻结等),似乎Windows的一些安全更新改变了鼠标挂钩的行为,以前的好代码变成了一个问题。 |
3
3
我很抱歉在这么长时间之后继续跟进,但是我已经通过生成一个单独的线程来解决了这个问题,该线程处理钩子(我没有向代码中添加所有内容,因为它也会翻译消息,但主要思想应该很清楚):
通过在创建的\u hookControl上调用BeginInvoke,可以从任何其他线程终止线程:
|
4
2
通过设置一个低级别的钩子,鼠标的响应性现在取决于您的主线程是否有响应,一个常见的错误是在启动过程的早期设置钩子。
套钩
在启动过程中,最好将钩子分派到线程上,以便在启动过程结束时发生。
调度钩
这在应用程序中仍然存在管理问题,以确保主线程不会执行任何长时间运行的进程,因为这也会锁定鼠标。这可以通过设置钩子然后执行
|
5
1
当你收到钩子事件时,关掉书,然后做你的工作,如果真的还需要,把钩子放回去。 这将阻止鼠标滞后。
|
6
1
你的钩子程序是昂贵的;你只需要弄清楚为什么以及如何修复它。
如果您将代码更改为尽可能多地在此线程之外进行处理,问题应该会消失。作为一个C++开发者,我甚至担心Marshal.PtrToStructure,因为低级钩子非常敏感,我不能说我的头可以保证这个操作很便宜,不会损害鼠标移动。
|
Robert King · Unity C#语法问题-转换位置 1 年前 |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
i_sniff_ket · 在unity之外使用unity类 2 年前 |