我试图在WPF中实现一个后台应用程序,该应用程序仅在右键单击屏幕顶部时才执行某些操作,因此我尝试钩住WH_MOUSE_LL
,效果很好。问题是退出应用程序时取消了回调,这在C语言中可以正常工作,但是即使传递给ERROR_INVALID_HOOK_HANDLE
的钩子句柄与我从{{ 1}}(下面的示例)。
编辑:我刚刚创建了一个简单的C#控制台应用程序,该应用程序注册了相同的钩子并立即取消注册,它也可以正常工作,因此我认为WPF可能会引起问题。
这是不起作用的C#代码,问题在析构函数中:
UnhookWindowsHookEx
这是工作得很好的C代码:
SetWindowsHookEx
答案 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
}
}