我需要在IE上下文菜单中添加一个菜单项。当您右键单击IE时,它与Google自定义上下文菜单“搜索Google for xxx”类似。
我做了一项研究,发现在IE BHO中覆盖IDocHostUIHandler :: ShowContextMenu可以自定义IE上下文菜单。示例项目可以在codeproject中发布的Popup阻止程序项目中找到。它运行良好,易于实现。 然而这种方法存在问题。问题是它会与每个MSDN的其他附加组件的上下文菜单自定义冲突。
在MSDN Internet Explorer Center论坛中,有一些关于此主题的讨论。但是没有发布适当的实施。
如果有人有这方面的经验,请分享您的想法。谢谢!
答案 0 :(得分:2)
请参阅MSDN上的 Adding Entries to the Standard Context Menu 。
对于某些示例代码,请下载并解压缩Web Accessories for Internet Explorer 5(该机制仍适用于IE版本,包括8)。查看ie5wa.inf
和*.html
以获取各种IE上下文菜单扩展的示例。
请注意,abive是在没有COM的情况下实现的,纯粹是通过一个注册表设置和一个包含blob脚本(Javascript,JScript,VBScript等)的文件。脚本(JScript,VBScript)可以反过来使用COM对象,您的菜单操作逻辑驻留在这样的对象中,例如
HKCU\Software\Microsoft\Internet Explorer\MenuExt\My &Context Menu" registry key (
&`,如果有的话)IDispatch
IIRC;同时阅读{ {3}})contexts
值(0x02
用于图片,0x10
用于选择等),用于调整何时应显示新的上下文菜单答案 1 :(得分:0)
我自定义了IE以导航到所选文本。您可以阅读完整的故事并获得详细的源代码here。
我的解决方案的核心是围绕以下javascript代码和注册表项[HKEY_CURRENT_USER \ Software \ Microsoft \ Internet Explorer \ MenuExt]构建的:
var parentwin = external.menuArguments;
var doc = parentwin.document;
var sel = doc.selection;
var rng = sel.createRange();
var str = new String(rng.text);
if(0 < str.length)
{
if (str.indexOf("http")!=0)
window.open("http://"+str, "_blank");
else
window.open(str, "_blank");
}