在Windows中添加全局键盘快捷键的最简单方法是什么?

时间:2009-06-03 21:57:34

标签: .net windows keyboard-shortcuts

我希望我的应用程序能够在未运行时检测键盘快捷键,但由于在Windows中似乎无法执行此操作,因此合理的后备操作是在没有任何UI监听按键的情况下进行后台处理。当应用程序不在.Net的前台时,是否可以监控按键?

看起来CodeProject article符合我的要求。

4 个答案:

答案 0 :(得分:4)

Windows快捷方式可以有一个关联的热键 - 右键单击​​“开始”菜单中的任何程序,转到“属性”,然后您将看到“快捷键”框。然后,Windows将代表您查找该热键,并在看到该程序时启动您的程序。 (我用它来Ctrl+Alt+C启动计算器。)

要以编程方式进行设置,请使用IShellLink

答案 1 :(得分:4)

通过调用此API:

RegisterHotKey

http://msdn.microsoft.com/en-us/library/ms646309.aspx

http://www.pinvoke.net/default.aspx/user32/RegisterHotKey.html

然后重写此方法“WndProc”以监控按键。

protected override void WndProc(ref System.Windows.Forms.Message m)
    {
        // let the base class process the message
        base.WndProc(ref m);

        // if this is a WM_HOTKEY message, notify the parent object
        const int WM_HOTKEY = 0x312;
        if (m.Msg == WM_HOTKEY) ...............

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.wndproc(VS.71).aspx

答案 2 :(得分:4)

This library也很不错

编辑:我最近创建了这个库,它使用了不同的方法:NHotkey

答案 3 :(得分:3)

没有办法让它不干扰。

添加全局键盘快捷键始终是侵入性的。如果你必须这样做,请确保它是一个选择加入,而不是选择退出功能。