C#低级鼠标挂钩和表单事件处理

时间:2011-08-29 16:18:28

标签: c# setwindowshookex mouse-hook

我正在使用VS 2010生成的简单表单,其中包含2个按钮,即启动和停止。 使用SetWindowsHookEx启动触发器WH_MOUSE_LL,并停止挂钩。 钩子工作正常,我选择“替换”鼠标中键单击双击,我唯一的问题是点击表单的最小化/最大化/关闭按钮,似乎有某种“事件竞赛”之间上面提到的按钮调用的钩子和事件。它反映了这样一个事实:当你按下其中一个按钮时,它会在完成它的动作之前保持“按下”一段时间(例如,形式最小化)。 当我右键单击表单并选择其中一个操作时,它会立即响应同样的事情,当我停止挂钩并按下上面提到的其中一个按钮时。 有没有人遇到过这样的行为?

1 个答案:

答案 0 :(得分:2)

我之前也经历过这个。我不确定确切的原因,但我总是通过监听鼠标进入和离开窗体,窗口的客户区域时触发的事件来解决问题。您可以使用这些事件来挂钩和取消挂钩鼠标,然后您将获得正常的行为。