单击“帮助”按钮时,Windows会杀死SetWindowsHookEx

时间:2014-10-10 11:17:42

标签: c# setwindowshookex

我遇到了一个奇怪的问题。我正在为我正在开发的c#应用程序创建两个钩子,一个用于键盘,一个用于鼠标,使用以下代码:

//keyboard
SetWindowsHookEx(13, keyBoardDelegate, IntPtr.Zero, 0);
//mouse
SetWindowsHookEx(14, mouseDelegate, IntPtr.Zero, 0);

鼠标和键盘钩子程序代码看起来与第一个参数和委托相同。

一切正常我在用户使用鼠标或键盘时收到通知。在我使用代码

激活主窗口顶部的小问题(帮助)按钮后出现问题
 this.HelpButton = true;
 this.HelpButtonClicked += new System.ComponentModel.CancelEventHandler(this.AutoStandBy_HelpButtonClicked);

每当我点击窗口顶部的帮助按钮时,我的表格会冻结一段时间,然后它会响应并执行AutoStandBy_HelpButtonClicked功能中的代码。为了阻止我的冻结申请,我必须删除鼠标SetWindowsHookEx功能,而不是键盘的SetWindowsHookEx。过去几天我一直在与这个问题作斗争,没有运气。有没有人知道如何解决这个问题?

 private IntPtr MouseHookDelegate(Int32 Code, IntPtr wParam, IntPtr lParam)
        {
            /// Call CallNextHookEx so we do not break the hook
            if (Code < 0)
                return CallNextHookEx(mouseHandle, Code, wParam, lParam);

            /// if a mouse change occured then call the mouse event
            if (MouseMoved != null)
                MouseMoved(this, new EventArgs());

            /// Call CallNextHookEx so we do not break the hook
            return CallNextHookEx(mouseHandle, Code, wParam, lParam);
        }

然后以我的主要形式

  mi = new MouseInput();
  ///register the mouse event to check for movement
  mi.MouseMoved += mouse_MouseMoved;

0 个答案:

没有答案