如何阻止 TChromium 中的密钥?
How to block a key in TChromium?
这是我的代码:
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;
这是我的代码:
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;