RegisterHotkey会阻止系统中的所有其他热键

时间:2012-03-16 12:44:09

标签: c# winapi hotkeys

我使用RegisterHotkey函数在我的应用程序中创建了热键,就像这样

[DllImport("user32.dll")]
public static extern bool RegisterHotKey(IntPtr hWnd, int id, int fsModifiers, int vlc);
...
RegisterHotKey(FormHandle, HOTSAVE, MOD_CONTROL, (int)'S');

这里FormHandle是应用程序主要形式的句柄,HOTSAVE - 是一个常量 - 热键的标识符。 问题是,我的应用程序收到热键消息,即使它不在焦点,从而阻止其他应用程序处理他们的热键(例如记事本中的Ctrl+S将无效)。

有人可以指出问题出在哪里吗?感谢。

1 个答案:

答案 0 :(得分:7)

您将热键与键盘加速器混淆。 热键总是全局的,这就是你必须注册的原因。

键盘加速器是特定于进程/窗口/对话框的,通常存储在应用程序资源中。

有关键盘加速器的更多信息here