IE浏览器右键菜单插件开发(上篇)——自定义一个IE右键菜单项

时间:2022-02-08 17:03:39

要做一个IE右键浏览器插件,得3步走。

第一,在IE右键菜单上添加自定义菜单名称,是通过注册表实现的,如下:

   string regkey = @"Software\Microsoft\Internet Explorer\MenuExt\KnowledgeSave";
string scriptPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"getcurrenturl.htm");
RegistryKey root = Registry.CurrentUser.OpenSubKey(regkey); if (null == root)
{
root = Registry.CurrentUser.CreateSubKey(regkey);
root.SetValue("", scriptPath, RegistryValueKind.String);
root.SetValue("Contexts", 0x000000f3, RegistryValueKind.DWord);
}
菜单名称:KnowledgeSave
菜单指向的文件:getcurrenturl.htm,右键点击菜单项”KnowledgeSave”,则会执行此页面:getcurrenturl.htm 第二,看看getcurrenturl.htm页面的构成,它是桥梁,通过activex对象实例化了c#对象。如下:
 <script type="text/javascript">
try {
var proxy = new ActiveXObject("myLib.MyClass");
var num = proxy.Add();
alert(num);
}
catch (e) {
alert(e.message);
}
</script>

其中,myLib.MyClass是c#编写的com组件暴露出来的类。

第三,com组件编写。下面的guid是随机生成的。

  [ComVisible(true)]
[Guid("317E81A0-C55C-36B2-B259-BEB1A4F3919E")]
public class MyClass
{
public int Add()
{
int a = ;
int b = ;
return a + b;
}
}

这个组件公布了一个Add方法,同时,它必须注册,方能使用,见下图。

IE浏览器右键菜单插件开发(上篇)——自定义一个IE右键菜单项

IE浏览器右键菜单插件开发(上篇)——自定义一个IE右键菜单项

看看我的测试结果,打开百度页面,右键点击 KnowledgeSave

IE浏览器右键菜单插件开发(上篇)——自定义一个IE右键菜单项

弹出一个结果:3

IE浏览器右键菜单插件开发(上篇)——自定义一个IE右键菜单项

注意:1、在com组件,操作本地文件(比如新建)时,会有限制,这里只是简单地做了个加法测试。

2、com组件需要注册。(上图中勾选了com互操作,所以在生成时,微软帮我们做了这一步),com注册成功后,会在注册表HKEY_CLASSES_ROOT下有记录。

3、IE右键菜单的注册表项位置:HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt

IE浏览器右键菜单插件开发(上篇)——自定义一个IE右键菜单项

IE浏览器右键菜单插件开发(上篇)——自定义一个IE右键菜单项