Delphi IDEに新しいショートカットを追加することは、Open Tools APIがこのためのサービスを提供するため、あまり難しくありません。ユーザーが1つのキーXToolsApiを使用してDelphi IDEにキーバインドShift + Ctrl + H Xを追加するにはどうすればよいですか?
Xがすべき続い
Shiftキー+ Ctrlキー+ Hを押したときに、私が起こるために何かをしたい
:追加のショートカットのようなWordStarの追加:私は明らかに、より複雑な何かをしようとしていますShiftキーの状態に関係なく機能します。私はShiftStateを設定した場合
procedure TGxKeyboardBinding.BindKeyboard(const BindingServices: IOTAKeyBindingServices);
const
DefaultKeyBindingsFlag = kfImplicitShift + kfImplicitModifier + kfImplicitKeypad;
var
GExpertsShortcut: Byte;
ShiftState: TShiftState;
FirstShortCut: TShortCut;
SecondShortCut: TShortCut;
begin
GExpertsShortcut := Ord('H');
ShiftState := [ssShift, ssCtrl];
FirstShortCut := ShortCut(GExpertsShortcut, ShiftState);
SecondShortCut := ShortCut(Ord('X'), []);
BindingServices.AddKeyBinding([FirstShortCut, SecondShortCut],
TwoKeyBindingHandler, nil,
DefaultKeyBindingsFlag, '', '');
end;
ので、::= [ssCtrl]
は私TwoKeyBindingHandlerメソッドを呼び出し
はCtrl + H Xを押し
は、これは私のコードです。
しかしShiftStateと:= [ssShift、ssCtrl]を押し
Shiftキー+ Ctrlキー+ H X
は何もしません。奇妙なことに
、ShiftState指定:
Shiftキーを押すと(最初のキーに影響を与える必要があります)= [ssShift、ssCtrlを] + Ctrlキー+ H Shiftキー+ X
もかかわらず、私のTwoKeyBindingHandlerメソッドを呼び出します2番目のShortCutは修飾キーなしで追加されます。
任意のアイデア?これはDelphi IDE/Open Tools APIの既知の制限/バグでしょうか?既知の回避策はありますか?
私はDelphi 2007とDelphi 10 Seattleで試してみましたが、違いはありません。
ありがとう、それは一般的にホットキーをチェックするための解決策ですが、私はOnKeyDownを処理するフォームがない私の特別なケースには当てはまりません。 (それ以外は:IsKeyDownを複数回呼び出すとパフォーマンスが良くないとは思わないので、GetKeyStateを1回だけ呼び出してキーの組み合わせを確認してください) – dummzeuch
アプリケーションのwm_keydownメッセージは引き続き処理できます。 –
はい、できます。 Open Tools APIを使用して解決策を見つけることができない場合、私はおそらくそれを正確に行います。残念なことに、私はまた、IDEがいくつかの追加のコードを必要とするかもしれないそのキーを見ていないようにする必要があります。しかし、私がそこに着くと、私はその橋を渡ります。 – dummzeuch