gpt4 book ai didi

c# - 如何使用 LowLevelKeyboardHook Hook Win + Tab

转载 作者:可可西里 更新时间:2023-11-01 12:41:52 35 4
gpt4 key购买 nike

简而言之:在 Win + Tab 之后阻止 Win 使 Windows 认为 Win 仍然处于关闭状态,然后按下 SWin 键,例如将打开搜索 super 按钮,而不是仅仅键入“s”...直到用户按下 Win 再次。 阻止它意味着将显示 Windows 开始菜单。我陷入了困境!


使用 Alt + Tab 使用 LowLevelKeyboardHookWin + 使用 RegisterHotKey 的一些 Ubounded Key。只有使用 LowLevelKeyboardHookWin 键才会出现此问题。

在下面的示例中,当检测到 Win + Tab 组合时,我将接管 Win up 事件。这导致每次后续击键的行为就好像 Win 键仍然按下一样。

        private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
{
if (nCode != HC_ACTION)
return CallNextHookEx(_hookID, nCode, wParam, lParam);

var keyInfo = (Kbdllhookstruct)Marshal.PtrToStructure(lParam, typeof(Kbdllhookstruct));

if (keyInfo.VkCode == VK_LWIN)
{
if (wParam == (IntPtr)WM_KEYDOWN) {
_isWinDown = true;
} else {
_isWinDown = false;

if (_isWinTabDetected) {
_isWinTabDetected = false;
return (IntPtr)1;
}
}
}
else if (keyInfo.VkCode == VK_TAB && _isWinDown) {
_isWinTabDetected = true;

if (wParam == (IntPtr)WM_KEYDOWN) {
return (IntPtr)1;
} else {
_isWinTabDetected = true;
Console.WriteLine("WIN + TAB Pressed");
return (IntPtr)1;
}
}

return CallNextHookEx(_hookID, nCode, wParam, lParam);
}
}
}

您可以在此处找到完整的代码(请注意,它应该替换要运行的空 WinForms 项目中的 Program.cs):https://gist.github.com/christianrondeau/bdd03a3dc32a7a718d62 - 按 Win + Tab,每次按下快捷方式时,Form 标题都会更新。

Note that the intent of hooking into this specific combination is to provide an Alt + Tab alternative without replacing Alt + Tab itself. An answer providing the ability to launching custom code using Win + Tab will also be accepted.

这是我的想法,但我找不到文档。所有人都可能成功地回答我的问题。

  • 告诉 Windows“取消”Win 启动而不实际触发它
  • 阻止 Windows 启动“开始”菜单一次
  • 直接挂接 Windows 的 Win + 事件,而不是手动挂接击键(如果存在,这将是到目前为止我的第一选择)

最佳答案

系统需要知道您释放了 Windows 键。我检查了我自己没有这个问题的钩子(Hook)之间的区别,你和我的唯一区别是这一行:

if (_isWinTabDetected) {
_isWinTabDetected = false;
return (IntPtr)1; //THIS LINE
}

关于c# - 如何使用 LowLevelKeyboardHook Hook Win + Tab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27181125/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com