C#:哪个是用于全局监控多键快捷键的最佳挂钩?

问题描述 投票:0回答:2

LowLevelKeyboardProc
KeyboardProc
。我想在 Windows 中全局监控 Alt+Q 等组合键,并根据按下 Alt+Q 执行操作。哪个钩子是最好的选择,我将如何继续检测热键中的所有键当前是否都被按下,而不是在钩子回调中逐一监视每个键?

c# keyboard-shortcuts
2个回答
2
投票

你别无选择,WH_KEYBOARD_LL 是你唯一可以用 C# 编写的。 WH_KEYBOARD需要编写一个可以注入到另一个进程中的DLL。 托管代码不可能,CLR 无法正确初始化。

还要考虑RegisterHotKey()。示例代码就在那里,您会在页面下方找到 C#。


0
投票

正如 Hans Passant 的回答所述,从技术上讲,除了连接到

WH_KEYBOARD_LL
钩子之外,没有其他办法。尽管如此,有一个托管库MouseKeyHook as nuget,它为您提供了一个方便的托管包装器。 github上的源代码

最近添加了对检测快捷键、组合键和序列的支持。这是一个使用示例:

void DoSomething()
{
    Console.WriteLine("You pressed UNDO");
}

Hook.GlobalEvents().OnCombination(new Dictionary<Combination, Action>
{
    {Combination.FromString("Control+Z"), DoSomething},
    {Combination.FromString("Shift+Alt+Enter"), () => { Console.WriteLine("You Pressed FULL SCREEN"); }}
});

有关详细信息,请参阅:检测按键组合和序列

© www.soinside.com 2019 - 2024. All rights reserved.