问题描述:如下代码,正常情况下,return 1;会阻止消息向下传递,即windows消息队列获取不到鼠标按键消息。但加入MessageBox.Show("1");后,return 1;不管用了。怎么解决这个问题啊!博客园的大神们。
protected override int HookCallbackProcedure(int nCode, int wParam, IntPtr lParam)
{
代码省略...
switch (eventType)
{
case MouseEventType.MouseDown:
if (MouseDown != null)
{
MessageBox.Show("1");
return 1;
//return CallNextHookEx(_handleToHook, nCode, wParam, lParam);
}
break;
default:
break;
}
}
return CallNextHookEx(_handleToHook, nCode, wParam, lParam);
}
找了很多资料,我自己结贴吧。钩子子程在处理的时候,应该在限定的时间内返回。且不应该有MessageBox等窗体popup的操作。应该考虑别的方式实现想要的功能。
– pecool 4年前