<p>您可能正在尝试做很多事情,而不是取消事件回调。在</p>
<p>通过HookManager和PumpMessages配置的任何事件函数回调都应该尽快返回。在</p>
<p>当你按下一个键时,Windows会及时通知你事件的发生,但是可能还有其他程序也需要这个事件。您正在事件中执行睡眠调用,但当您睡眠时,Windows正在等待您对此回调的响应。在</p>
<p>我的猜测是,在有一定数量的机会及时返回之后,您的活动注册将被Windows忽略。在</p>
<p>将睡眠命令移到事件之外,并在hookmanager回调之外触发实际的单击睡眠序列。在</p>
<p>编辑:链接/引用:</p>
<p>PyHook API文档是最好的(不幸的是),<a href="http://pyhook.sourceforge.net/doc_1.5.0/" rel="nofollow">http://pyhook.sourceforge.net/doc_1.5.0/</a>如果您注意到在事件中可以做的许多事情,那么就很清楚为什么时间是最重要的。Windows想知道如何处理按键(例如),而且按键发生得非常快,所以它想尽快知道。在</p>
<p>理解PyHook是一个非常薄的层,而且大部分功能都是由Windows提供的,所以最好的文档来自MSDN<a href="http://msdn.microsoft.com/en-us/library/ms632589(v=vs.85).aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/ms632589(v=vs.85).aspx</a>。也可能需要查看一些关于“消息”的信息(这是PumpMessages最终派生的地方)书面文本非常具有描述性,许多常量和值都通过PyHook正确地反映出来,尽管好的代码段不是用Python编写的。在</p>
<p>这里有一个相当直接的消息处理(hookmanager知道如何获得消息,PumpMessages通过它来传递),<a href="http://msdn.microsoft.com/en-us/library/ms644927(v=vs.85).aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/ms644927(v=vs.85).aspx</a></p>
<blockquote>
<p>If a top-level window stops responding to messages for more than several seconds, the system considers the window to be not responding.</p>
</blockquote>
<p>以及</p>
<blockquote>
<p><b>Message Handling</b>
An application must remove and process messages posted to the message queues of its threads</p>
</blockquote>
<p>当你给你的睡眠打电话时,你是在挂着你当前的信息,而忽略了其他可能堆积起来的信息。即使你抓到消息并立即返回,Windows也不在乎你如何处理它,只要你在消费。在</p>