You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Delphi 10.4.1+中TEdgeBrowser如何捕获F12打开开发者工具事件

解决方案

一、解决按键捕获失效问题

你用应用级消息捕获不到TEdgeBrowser的快捷键,是因为TEdgeBrowser底层基于微软WebView2控件,内部有独立的消息处理逻辑,会优先处理快捷键,不会往上抛到主窗体消息循环。推荐两种可行方案:

方案1:禁用内置DevTools快捷键,自行捕获按键

这是最简单的方案,直接关闭WebView2内置的F12/CTRL+SHIFT+C触发逻辑,你原有的消息捕获代码即可生效:

  1. 先在TEdgeBrowser的OnCreated事件中禁用快捷键:
procedure TMainForm.EdgeBrowser1Created(Sender: TObject);
begin
  // 禁用WebView2内置的开发者工具快捷键
  EdgeBrowser1.CoreWebView2.Settings.AreDevToolsShortcutsEnabled := False;
end;
  1. 你原本写在ApplicationEvents1Message里的F12捕获逻辑就可以正常触发了,捕获后自行处理置顶逻辑,再主动打开开发者工具即可。

方案2:直接监听WebView2的快捷键事件

如果不想全局禁用快捷键,可以直接用TEdgeBrowser自带的OnAcceleratorKeyPressed事件,专门捕获WebView2收到的所有按键:

procedure TMainForm.EdgeBrowser1AcceleratorKeyPressed(Sender: TCustomEdgeBrowser;
  const AArgs: ICoreWebView2AcceleratorKeyPressedEventArgs);
var
  Key: WPARAM;
  CtrlPressed, ShiftPressed: Boolean;
begin
  AArgs.get_Key(@Key);
  AArgs.get_IsControlPressed(@CtrlPressed);
  AArgs.get_IsShiftPressed(@ShiftPressed);

  // 捕获F12
  if Key = VK_F12 then
  begin
    // 这里先执行你需要的置顶调整逻辑
    SetStatusLog(EID_KEYPRESS,'F12');
    // 主动打开开发者工具
    EdgeBrowser1.CoreWebView2.OpenDevToolsWindow;
    // 标记事件已处理,阻止WebView2默认逻辑
    AArgs.put_Handled(True);
    Exit;
  end;

  // 捕获CTRL+SHIFT+C
  if CtrlPressed and ShiftPressed and (Key = Ord('C')) then
  begin
    // 同上处理逻辑
    EdgeBrowser1.CoreWebView2.OpenDevToolsWindow;
    AArgs.put_Handled(True);
    Exit;
  end;
end;

二、主动调用OpenDevToolsWindow的方法

可以直接调用,只要确保TEdgeBrowser已经完成初始化(即OnCreated事件已经触发,CoreWebView2对象不为空),直接执行以下代码即可:

// 主动打开开发者工具
EdgeBrowser1.CoreWebView2.OpenDevToolsWindow;

补充:解决DevTools窗口后置问题

打开开发者工具后,可以通过Windows API枚举当前进程的窗口,找到标题含「开发人员工具」的窗口,调用SetWindowPos设置其置顶属性,或者设置其Owner为你的主窗体,即可避免被主窗体遮挡。


内容的提问来源于stack exchange,提问作者stackman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 06:54:03