加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

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

发布时间:2020-12-14 02:09:00 所属栏目:Windows 来源:网络整理
导读:是否无法在键盘快捷键中使用暂停/中断键? 我知道我可以回复Pause / Break键,例如 procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);begin if Key = VK_PAUSE then ShowMessage('VK_PAUSE pressed');end; 但是,我无法使用
是否无法在键盘快捷键中使用暂停/中断键?

我知道我可以回复Pause / Break键,例如

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

但是,我无法使用TShortCut属性响应Pause / Break键,例如在菜单项和动作列表中. Object Inspector让我进入Pause,Shift Pause,Ctrl Pause,Alt Pause,Ctrl Shift Pause等,以便清楚地识别Pause键.但是当我运行应用程序时,不会在指定的快捷方式上触发菜单项/操作.有一个已知的解决方法吗?

解决方法

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

在设计时分配快捷方式时,IDE必须将字符串转换为快捷方式.问题是TextToShortCut(‘暂停’);返回144而不是19.虽然我不确定我是否相信Delphi的错误;使用“暂停”,检索快捷方式会找到菜单.GetSpecialName,我认为它不应该.

另外请注意,虽然上面提到的解决方法适用于“Alt”和“Shift”修饰符,但它不适用于“Ctrl”修饰符.原因是,操作系统协助’Ctrl Break’处理特殊代码:VK_CANCEL.要使用“Ctrl Pause”作为快捷方式,必须编码;

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读