在Windows Vista上应用程序看不到Shift + Ctrl + 0组合键

Jan*_*rts 11 delphi keyboard-events windows-vista

我从一个新的Delphi VCL应用程序开始,将Menus添加到uses子句,在表单上放一个标签,并指定表单的OnShortCut事件:

procedure TForm1.FormShortCut(var Msg: TWMKey; var Handled: Boolean);
begin
  Label1.Caption := ShortCutToText(ShortCut(Msg.CharCode, KeyDataToShiftState(Msg.KeyData)));
end;
Run Code Online (Sandbox Code Playgroud)

在XP上,这适用于我尝试过的所有快捷键组合,包括Shift+ Ctrl+ 0.在Vista和Windows 7上,测试应用程序显示Shift+ Ctrl+ 1Shift+ Ctrl+ 9,但不显示Shift+ Ctrl+ 0.其他组合如Shift+ 0,Ctrl+ 0,甚至Shift+ Ctrl+ Alt+ 0都可以正常显示.

在调试器下运行应用程序,我发现如果在按下键的同时按住ShiftCtrl键,则永远不会使用Msg.CharCode = Ord('0')触发OnShortCut事件0.

Delphi IDE在Vista下也存在同样的问题. Ctrl+ Shift+ 1设置书签1,但Ctrl+ Shift+ 0不设置书签0,它应该.

我已经使用Delphi 2007和2010在Windows Vista和7的原始安装上测试了这一点,因此没有第三方软件捕获密钥.我没有尝试过任何其他开发工具来确定问题是Delphi还是Vista本身.

fbo*_*net 15

Shift+ Ctrl+ 0在Vista中预先分配给输入法编辑器(IME):

http://support.microsoft.com/kb/967893

这将解决您的问题但会影响IME的用户(主要是亚洲版本),因此您应该考虑不使用此快捷方式.