- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
简而言之:在 Win + Tab 之后阻止 Win 使 Windows 认为 Win 仍然处于关闭状态,然后按下 S 和 Win 键,例如将打开搜索 super 按钮,而不是仅仅键入“s”...直到用户按下 Win 再次。 不阻止它意味着将显示 Windows 开始菜单。我陷入了困境!
使用 Alt + Tab 使用 LowLevelKeyboardHook
或 Win + 使用 RegisterHotKey
的一些 Ubounded Key。只有使用 LowLevelKeyboardHook
的 Win 键才会出现此问题。
在下面的示例中,当检测到 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 键。我检查了我自己没有这个问题的钩子(Hook)之间的区别,你和我的唯一区别是这一行:
if (_isWinTabDetected) {
_isWinTabDetected = false;
return (IntPtr)1; //THIS LINE
}
关于c# - 如何使用 LowLevelKeyboardHook Hook Win + Tab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27181125/
这个问题在这里已经有了答案: WH_KEYBOARD_LL hook not called (3 个答案) 关闭 7 年前。 我尝试用 c 编写一个小钩子(Hook)程序。该程序不工作,我不知道为什
简而言之:在 Win + Tab 之后阻止 Win 使 Windows 认为 Win 仍然处于关闭状态,然后按下 S 和 Win 键,例如将打开搜索 super 按钮,而不是仅仅键入“s”...直到用
我是一名优秀的程序员,十分优秀!