0

これが私のコードです:

procedure PreKeyEvent(Sender: TObject; const browser: ICefBrowser;
  const event: PCefKeyEvent; osEvent: PMsg;
  out isKeyboardShortcut, Result: Boolean);
begin
    if (event.windows_key_code = VK_CONTROL) or
    (event.windows_key_code = VK_RMENU) or (event.windows_key_code = VK_LMENU) then
  begin
    event.windows_key_code := 0;
  end;
end;

IFブロックは問題なく動作します。しかし、この行 [ event.windows_key_code := 0;] は指定されたキーを無視しません。イベントを使用して一部のキーを無効にするにはどうすればよいPreKeyEventですか?

編集:Resultパラメータを に設定しようとしましたtrue。まだ動作しません。

4

1 に答える 1

0

OK、私が気付いたように、CtrlまたはAltキーを個別に無効にすることはできません。代わりに、native_key_codeキーボードで押された任意の種類のキーの整数値を表す があります (ショートカットには異なるコードがあります)。自分で値を出力するだけnative_key_codeで、関連する生成コードを確認できます。

したがって、私の場合、無効Ctrl+AにしてCtrl+Cショートカットを作成する必要がありました:

procedure PreKeyEvent(Sender: TObject; const browser: ICefBrowser;
  const event: PCefKeyEvent; osEvent: PMsg;
  out isKeyboardShortcut, Result: Boolean);
const
  CtrlA = 1966081;
  CtrlC = 3014657;
begin
  if (event.native_key_code = CtrlA) or (event.native_key_code = CtrlC) then
  begin
    Result := true;
  end;
end;
于 2015-03-23T07:36:40.573 に答える