这个目前似乎是无法实现的。
对于高级鼠标触发,是会拦截鼠标消息的,以避免鼠标原始功能的触发(比如显示了右键菜单)。 所以无法获取实际鼠标的按下状态。
它的实现原理大概是这样:
- 按下的时候,先拦截掉MouseDown消息
- 如果鼠标移动了,就触发按下并移动的规则; 然后拦截抬起消息;
- 如果按下时间超过一定时间没有抬起,就触发长按规则;然后拦截抬起消息;
- 如果立即抬起了,就拦截掉抬起消息,并重新模拟一个鼠标点击消息(按下+抬起)
总之,都会拦截掉鼠标的按下和抬起消息,只是根据情况可能会模拟一个。