当前位置: 首页 > news >正文

CEF系列技术文章:菜单隐藏实现


核心逻辑与 ID 说明

CEF(Chromium Embedded Framework)中可通过硬编码指定菜单项 ID,结合菜单可见性判断接口,精准隐藏指定 Chrome 原生菜单;同时支持工具栏按钮的显隐控制,以下为核心实现与关键 ID 说明。

核心实现逻辑

通过定义默认隐藏的菜单项 ID 数组,在IsMenuItemVisible方法中校验目标 ID 是否在数组内,若匹配则返回false隐藏菜单;通过IsChromeAppMenuItemVisible接口接入 CEF 的菜单可见性判断流程,通过IsChromeToolbarButtonVisible控制工具栏按钮显隐。核心代码如下:

// 硬编码默认隐藏的菜单项ID(来自cef_command_ids.h)
static const int kDefaultHiddenMenuIds[] = {// 个人资料相关35039,  // IDC_PROFILE_MENU_IN_APP_MENU - 三点菜单中"您的 Chromium"个人资料菜单46100,  // IDC_PROFILE_MAIN_MENU - 个人资料主菜单// 关于/自定义Chrome40018,  // IDC_ABOUT - 关于 Chromium37350,  // IDC_CUSTOMIZE_CHROME - 更多工具→自定义Chrome40283,  // IDC_SHOW_CUSTOMIZE_CHROME_SIDE_PANEL - 自定义Chrome侧边栏40284,  // IDC_SHOW_CUSTOMIZE_CHROME_TOOLBAR - 自定义Chrome工具栏// Chrome推广功能40263,  // IDC_CHROME_TIPS - Chrome提示40264,  // IDC_CHROME_WHATS_NEW - Chrome新功能// Google Lens右键菜单40282,  // IDC_SHOW_GOOGLE_LENS_SHORTCUT - Google Lens快捷方式50124,  // IDC_CONTENT_CONTEXT_SEARCHWEBFORIMAGE - 右键:使用Google搜索图片50127,  // IDC_CONTENT_CONTEXT_SEARCHLENSFORIMAGE - 右键:使用Google Lens搜索图片50134,  // IDC_CONTENT_CONTEXT_SEARCHLENSFORVIDEOFRAME - 右键:使用Lens搜索视频帧50174,  // IDC_CONTENT_CONTEXT_LENS_REGION_SEARCH - 右键:Lens区域搜索50193,  // IDC_CONTENT_CONTEXT_LENS_OVERLAY - 右键:Lens覆盖层
};// 校验ID是否在默认隐藏列表
bool IsInDefaultHiddenList(int command_id) {for (int id : kDefaultHiddenMenuIds) {if (id == command_id) return true;}return false;
}// 判断菜单项可见性
bool IsMenuItemVisible(int command_id) {if (IsInDefaultHiddenList(command_id)) {LOG(INFO) << "=== Menu " << command_id << " (hardcoded): hidden";return false;}return true;
}// CEF Chrome应用菜单可见性接口
bool NiceClientHandler::IsChromeAppMenuItemVisible(CefRefPtr<CefBrowser> browser, int command_id) {CEF_REQUIRE_UI_THREAD();if (!filter_chrome_commands_) return true;LOG(INFO) << "=== IsChromeAppMenuItemVisible: command_id=" << command_id;return IsMenuItemVisible(command_id);
}// CEF 工具栏按钮可见性接口
bool NiceClientHandler::IsChromeToolbarButtonVisible(cef_chrome_toolbar_button_type_t button_type) {if (!filter_chrome_commands_) return true;switch (button_type) {case CEF_CTBT_AVATAR:LOG(INFO) << "=== Hiding Avatar button (CEF limitation: cannot intercept click)";return false;default:return true;}
}
 

修改CEF源码重新编译需要比较长的时间,我在Intel Ultra 5机器上8小时才完成编译,建议使用云电脑或者云服务器上进程编译。最近天翼云电脑在免费赠送高配云电脑,免费使用两个月,已实名的三网手机号即可扫码领取:

p2

 

如图,已经成功隐藏地址栏后面头像菜单,以及三个点菜单里面的关于chrome等菜单。

补充说明

  1. 所有 ID 均来自 CEF 源码的cef_command_ids.h文件,需确保 ID 与使用的 CEF 版本匹配;
  2. 可通过filter_chrome_commands_开关全局控制菜单过滤逻辑,关闭时将显示所有菜单项。
 
http://www.gsyq.cn/news/75057.html

相关文章:

  • SpyCloud数据揭示:企业用户遭遇钓鱼攻击的可能性是恶意软件的三倍
  • 2025年专业HIFI耳机口碑排行榜推荐,不容错过!
  • 全网热议!2025年靠谱的全屋定制品牌推荐,让生活更智能
  • 一些心事
  • 模板索引 字符串
  • 2025.12.6日22:51-patriarchal家长的;族长的;由族长统治的
  • 2024 MUCAR BT200 PRO OBD2 Scanner: Full System Diagnostic 15 Resets Wireless Code Reader
  • 责任链模式
  • Last Dance
  • 每日反思(2025年12月6号)
  • AT_agc002_d 题解
  • 【亲测免费】 开源项目html2image常见问题解决方案 - 详解
  • 2025最新东莞简餐快餐菜品研发培训服务商/厂家TOP5评测!全链条赋能+实战落地权威榜单发布,助力餐饮品牌破解同质化难题
  • 12月6日总结 - 作业----
  • AlmaLinux下mysql 8安装与数据迁移
  • 策略模式
  • Ubuntu下,MySQL修改端口号
  • CSP2024 游记
  • CRNN
  • wireshark相关
  • 一些特性的演变过程(C++11、C++14、C++17、C++20)
  • 支离破碎发言(七)
  • MD-FPN
  • 2025最新贵州特产/伴手礼供应商TOP5推荐!贵州/贵阳/遵义/毕节/黔东南特产选购平台/渠道/供应商/采购渠道榜单发布,甄选贵州地道风物好礼
  • 街头徒手健身3硬核核心训练
  • 我们的休闲娱乐区,会变成什么样子(哽咽)
  • Cloudflare成功抵御AISURU僵尸网络发起的破纪录29.7 Tbps DDoS攻击
  • 从 Spring Boot 2.x 到 3.5.x + JDK21:一次完整的生产环境迁移实战 - Rainbow
  • 2025最新贵州/贵阳手信/伴手礼厂家 TOP5 评测!地道风物+文化赋能权威榜单发布,甄选贵礼传递山水心意
  • Focal Loss