当我设置非全局 WH_KEYBOARD 挂钩时,它工作正常并且所有键都被捕获。但是如果我按 Alt+Tab 然后返回窗口,钩子会无缘无故地停止工作。这是我的钩子进程,我试图阻止 id = root 进程的所有键盘消息:
private static IntPtr HookCallback (int nCode, IntPtr wParam, IntPtr lParam)
{
var proc = 0u;
GetWindowThreadProcessId(GetForegroundWindow(), out proc);
if (proc != root) return CallNextHookEx(hooks[0], nCode, wParam, lParam);
return new IntPtr(1);
}
为了开发,我在 VirtualBox 中使用 32 位 Windows。
更新: 它也不依赖于阻塞或将参数传递给下一个钩子:什么都不做然后调用下一个钩子的代码变体在 Alt+Tab 之后也停止工作。如果不使用 Alt+Tab,失去焦点和激活窗口不会停止钩子。