首页 新闻 会员 周边 捐助

钩子子程中如果有MessageBox.Show,消息会立即被windows消息队列接收

0
悬赏园豆:20 [已关闭问题] 关闭于 2020-03-31 10:59

问题描述:如下代码,正常情况下,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);

    }
pecool的主页 pecool | 初学一级 | 园豆:14
提问于:2020-01-13 15:05

找了很多资料,我自己结贴吧。钩子子程在处理的时候,应该在限定的时间内返回。且不应该有MessageBox等窗体popup的操作。应该考虑别的方式实现想要的功能。

pecool 4年前
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册