我希望我的应用程序能够在未运行时检测键盘快捷键,但由于在Windows中似乎无法执行此操作,因此合理的后备操作是在没有任何UI监听按键的情况下进行后台处理。当应用程序不在.Net的前台时,是否可以监控按键?
看起来CodeProject article符合我的要求。
答案 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)
没有办法让它不干扰。
添加全局键盘快捷键始终是侵入性的。如果你必须这样做,请确保它是一个选择加入,而不是选择退出功能。