UnhookWindowsHookEx产生ERROR_INVALID_HOOK_HANDLE吗?

时间:2018-08-04 12:58:15

标签: wpf unhookwindowshookex

我试图在WPF中实现一个后台应用程序,该应用程序仅在右键单击屏幕顶部时才执行某些操作,因此我尝试钩住WH_MOUSE_LL,效果很好。问题是退出应用程序时取消了回调,这在C语言中可以正常工作,但是即使传递给ERROR_INVALID_HOOK_HANDLE的钩子句柄与我从{{ 1}}(下面的示例)。

编辑:我刚刚创建了一个简单的C#控制台应用程序,该应用程序注册了相同的钩子并立即取消注册,它也可以正常工作,因此我认为WPF可能会引起问题。

这是不起作用的C#代码,问题在析构函数中:

UnhookWindowsHookEx

这是工作得很好的C代码:

SetWindowsHookEx

1 个答案:

答案 0 :(得分:0)

好的,我只是简单地重构了LowLevelMouseHook并添加了一个自定义Main()方法,该方法类似于下面的方法。 UnhookWindowsHookEx现在成功了。

public static class EntryPoint {
    public static void Main () {
        LowLevelMouseHook.Begin() // Here SetWindowsHookEx is called
        App.Main()                // Original entrypoint
        LowLevelMouseHook.End()   // Here UnhookWindowsHookEx is called
    }
}