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

Ale*_*lex 6 c# mouse-hook setwindowshookex

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

A.R*_*.R. 2

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