我们使用 BHO 和 C# 开发了一个 Internet Explorer 插件。我们还添加了一些上下文菜单操作(对于使用插件的 IE)。我们使用了 HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\ 下的注册条目来添加上下文菜单条目。有没有办法订购条目?还是加个分隔符?还是嵌套菜单?目前,它们都按字母顺序排列。非常感谢!
1 回答
据我所知,不,仍然没有很好的方法来完成这个看似简单的任务。
对于未来的读者,您可以考虑使用两种方法(其中一种 OP 提到)来添加上下文菜单项。
注册方法
遗憾的是,无法使用注册表方法在 Internet Explorer 中创建“丰富”菜单。可以使用简单的“上下文”过滤,但仅此而已。要总结链接中描述的此方法,首先在以下位置添加一个新子项:
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\<Menu Text>
<MenuText>
是显示在 Internet Explorer 上下文菜单中的文本。使用&
加速键确实可以按预期工作。
将该值设置为要执行的脚本文件(Default)
的路径。这可能是 Javsascript、VB 脚本等。如果您正在创建 BHO,最好将其与您的 DLL/EXE 一起打包;使用它访问它。例如,我的系统有一个以值命名的条目:res://
E&xport to Microsoft Excel
res://C:\PROGRA~2\MICROS~1\Office12\EXCEL.EXE/3000
IDocHostUIHandler 方法
此方法有效地将 IE 的整个上下文菜单替换为您的 BHO 以编程方式生成的菜单。虽然非常灵活,但非常不鼓励这样做。如果不止一个 BHO 尝试这样做,结果可能是灾难性的。我在 CodeProject 的Pop-Up Blocker tutorial上找到了这种方法的工作示例,但由于上述原因,我自己没有尝试过。
进一步阅读:
我正在积极开展一个包含许多这些组件的项目。如果我找到任何简单的解决方案,我会尽量保持更新这篇文章。
- http://answers.google.com/answers/threadview/id/17781.html
- http://blogs.msdn.com/b/nicd/archive/2007/04/18/calling-into-your-bho-from-a-client-script.aspx
- http://1code.codeplex.com/releases/view/62253#DownloadId=215004
- http://social.msdn.microsoft.com/Forums/en/ieextensiondevelopment/thread/1dc29a00-12e9-45ff-a281-d72553dc79ad