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

Dmi*_*hin 0 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');
Run Code Online (Sandbox Code Playgroud)

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

谁能指出问题出在哪里?谢谢.

Ste*_*fan 7

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

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

更多关于键盘加速器的信息