新しい Delphi VCL アプリケーションから始めて、メニューを uses 句に追加し、フォームにラベルをドロップして、フォームの OnShortCut イベントを割り当てます。
procedure TForm1.FormShortCut(var Msg: TWMKey; var Handled: Boolean);
begin
Label1.Caption := ShortCutToText(ShortCut(Msg.CharCode, KeyDataToShiftState(Msg.KeyData)));
end;
ShiftXP では、これは++を含む、私が試したすべてのショートカット キーの組み合わせで正しく機能しCtrlます0。Vista および Windows 7 では、テスト アプリケーションはShift+ Ctrl+1からShift+ Ctrl+を表示しますが、 + +は表示し9ません。+ 、+ 、さらには+ + +などの他の組み合わせも問題なく表示されます。ShiftCtrl0Shift0Ctrl0ShiftCtrlAlt0
デバッガーでアプリケーションを実行すると、キーを押しながらShiftとキーの両方を押したままにすると、Msg.CharCode = Ord('0') で OnShortCut イベントが発生しないことがわかりました。Ctrl0
Delphi IDE は、Vista で同じ問題を抱えています。 Ctrl+ Shift+1はブックマーク 1 を設定しますが、Ctrl++はブックマークShift00を設定しません。
VMware の Windows Vista および 7 のバージン インストールで Delphi 2007 および 2010 を使用してこれをテストしたので、キーをトラップするサード パーティ ソフトウェアはありません。問題が Delphi にあるのか、Vista 自体にあるのかを判断するために、他の開発ツールを試したことはありません。