0

TMainManu 項目のショートカットを WIN キーでどうにか設定できますか? たとえば、「Win+Alt+S」と設定します。TShortcut タイプは WIN キーをサポートしていますか。Delphi7を使用しています。

4

3 に答える 3

6

ShortCut少なくとも私が知る限り、VCL コントロールのプロパティからそのようなショートカットに応答することはできません。Delphi のショートカット メカニズムは、Windows キーを修飾キーとして扱いません。したがって、非修飾キーとして含める必要があります。ただし、Delphi ショートカットは 1 つの非修飾子キーしか参照できず、キーを押すには 2 つの非修飾子キーが必要です。

ただし、独自のオーダーメイドの処理を追加して、そのようなキーの押下に応答することができます。たとえばOnShortCut、フォームの場合。これは非常に大雑把ですが、それが可能であることを示しています。

procedure TMyForm.FormShortCut(var Msg: TWMKey; var Handled: Boolean);
begin
  if (GetKeyState(VK_LWIN)<0) and (GetKeyState(VK_MENU)<0) then begin
    if Msg.CharCode = ord('S') then begin
      // do something
      Handled := True;
    end;
  end;
end;

ここで、これを整理したり、適切に実行したりするつもりはありません。Windows キーを含むショートカットに応答してはならないというガイドラインが非常に明確であるためです。MSDNは次のように述べています。

WINDOWS キーを含むキーボード ショートカットは、オペレーティング システム用に予約されています。

アプリケーションでそのようなキーの押下を完全に処理できることを証明したかっただけです。

于 2013-09-16T20:51:54.753 に答える