【发布时间】:2009-12-28 15:39:15
【问题描述】:
每当用户按下“window key + s”时,我都需要我的 WPF 应用程序获得焦点。
我的解决方案是使用 SetWindowsHookEx 挂钩键盘事件。但是我返回的句柄始终为 0。当我调用 GetLastWin32Error 时,该值也是 0(即它实际上报告上一个操作成功)
_hookHandle = SetWindowsHookEx(WH_KEYBOARD_LL, _hookFunction, _hinstance, 0);
if (_hookHandle == IntPtr.Zero)
throw new Win32Exception(Marshal.GetLastWin32Error());
(不用说 _hinstance 有一个有效值,_hookFunction 也是如此)
有什么想法吗?其他解决方案?
谢谢。
【问题讨论】:
-
能否提供 P/Invoke 签名和 WH_KEYBOARD_LL 的值?
-
[DllImport("user32.dll",SetLastError=true)] private static extern IntPtr SetWindowsHookEx(HookType code, HookProc func, IntPtr instance, int threadID); WH_KEYBOARD_LL = 13