c++ - 如何实际自定义 IE 上下文菜单?

标签 c++ internet-explorer activex browser

我需要在 IE 上下文菜单中添加一个菜单项。类似于右键单击 IE 时 Google 自定义的上下文菜单“Search Google for xxx”。

我做了一项研究,发现在 IE BHO 中覆盖 IDocHostUIHandler::ShowContextMenu 可以自定义 IE 上下文菜单。示例项目可以在 codeproject 中发布的 Popup blocker 项目中找到。它运作良好且易于实现。 但是这种方法有一个问题。问题是根据 MSDN,它会与其他加载项的上下文菜单自定义冲突。

在 MSDN Internet Explorer Center 论坛中,有一些关于此主题的讨论。但是没有发布正确的实现。

如果有人对此有经验,请分享您的想法。谢谢!

最佳答案

参见 Adding Entries to the Standard Context Menu 在 MSDN 上。

对于一些示例代码,下载并解压缩 Web Accessories for Internet Explorer 5 (该机制在 IE 8 及更高版本中仍然有效)。查看 ie5wa.inf*.html 以获取各种 IE 上下文菜单扩展的示例。

请注意,abive 是在没有 COM 的情况下实现的,纯粹是通过一个注册表设置和一个包含大量脚本(Javascript、JScript、VBScript 等)的文件。脚本(JScript、VBScript 等)可能反过来与 COM 对象一起工作,应该您的菜单操作逻辑驻留在这样的对象中,例如

  • 创建一个 HKCU\Software\Microsoft\Internet Explorer\MenuExt\My &Context Menu"注册表项(&` 在 menu accelerator 字母之前,如果有的话)
  • 将键的默认值设置为指向包含实现上下文菜单操作的脚本代码的文件,可能与 COM 对象交互(必须支持 IDispatch IIRC;另请阅读在 My Computer Security Zone )
  • 创建一个二进制 contexts 值(0x02 用于图像,0x10 用于选择,等等)它规定新的上下文菜单应该何时出现显示

关于c++ - 如何实际自定义 IE 上下文菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2597617/

相关文章:

c# - 将 WPF 控件公开为 ActiveX 控件

c++ - 复合文字是标准 C++ 吗?

c++ - #include guard 不起作用 - 或者我不明白

c++ - 具有重写运算符的模板类

internet-explorer - JScript/VBscript : Tracking file download progress via XMLHttpRequest

c++ - ATL ActiveX DLL 作为映射类型图像和数据加载两次

c++ - 使用 std::move 有任何性能优势吗?

internet-explorer - 相对定位 anchor (IN Word)

javascript - 无法在 IE11 中使用 JavaScript 聚焦输入

javascript - 使用javascript扫描目录