这是我的代码:
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
。仍然不起作用。
好的,因为我意识到不可能单独禁用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;