delphi - 暂停/中断作为键盘快捷键(Win32,*可能*特定于 Delphi)

标签 delphi winapi keyboard-shortcuts

是否无法使用键盘快捷键中的暂停/中断键?

我知道我可以响应暂停/中断键,例如

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = VK_PAUSE then
    ShowMessage('VK_PAUSE pressed');
end;

但是,我无法使用 TShortCut 属性响应 Pause/Break 键,例如在菜单项和操作列表中。对象检查器允许我输入 PauseShift + PauseCtrl + PauseAlt + PauseCtrl + Shift + Pause 等,所以很清楚识别暂停键。但是当我运行应用程序时,指定的快捷方式不会触发菜单项/操作。有已知的解决方法吗?

最佳答案

对于 D2007,一个快速的解决方法似乎是在运行时分配它;
Action1.ShortCut := VK_PAUSE;
出于某种原因,如果在设计时分配,VK_PAUSE (19) 似乎会转变为 VK_NUMLOCK (144)。

<小时/> 在设计时分配快捷方式时,IDE 必须将字符串转换为快捷方式。问题是 TextToShortCut('Pause'); 返回 144 而不是 19。虽然我不确定我是否相信错误出在 Delphi;通过“暂停”,检索快捷方式会找到 menus.GetSpecialName 的路径,我认为不应该。


另一方面,虽然上述解决方法适用于“Alt”和“Shift”修饰符,但不适用于“Ctrl”修饰符。原因是,操作系统分配“Ctrl+Break”处理特殊代码:VK_CANCEL。要使用“Ctrl+Pause”作为快捷键,必须编写代码;

Action1.ShortCut := menus.Shortcut(VK_CANCEL, [ssCtrl]);

关于delphi - 暂停/中断作为键盘快捷键(Win32,*可能*特定于 Delphi),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3258210/

相关文章:

delphi - 如何禁用 Delphi 中关于 "return value ... might be undefined"的警告?

visual-studio - 在Visual Studio中将多行代码格式化为单行

delphi - 错误平台变量无效 "MCD"

delphi - 如何创建具有不同 Aero 玻璃框架的 window ?

python - 导入错误 : no module named win32api

c - HFONT 我从对话框中得到的不是我发送的

c - 如何在 C 语言的 Windows 上安装访问冲突错误的信号处理程序?

visual-studio - 在 Visual Studio 中获取最新版本的键盘快捷键

command-line - Windows 命令提示符中的 F-N 快捷键

windows - Windows 7 上的 Microsoft Access 文本 ODBC 驱动程序