zoukankan      html  css  js  c++  java
  • IE浏览器右键菜单插件开发(上篇)——自定义一个IE右键菜单项

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

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

     1   string regkey = @"SoftwareMicrosoftInternet ExplorerMenuExtKnowledgeSave";
     2                 string scriptPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"getcurrenturl.htm");
     3                 RegistryKey root = Registry.CurrentUser.OpenSubKey(regkey);
     4 
     5                 if (null == root)
     6                 {
     7                     root = Registry.CurrentUser.CreateSubKey(regkey);
     8                     root.SetValue("", scriptPath, RegistryValueKind.String);
     9                     root.SetValue("Contexts", 0x000000f3, RegistryValueKind.DWord);
    10                 }
    菜单名称:KnowledgeSave
    菜单指向的文件:getcurrenturl.htm,右键点击菜单项”KnowledgeSave”,则会执行此页面:getcurrenturl.htm

    第二,看看getcurrenturl.htm页面的构成,它是桥梁,通过activex对象实例化了c#对象。如下:
     1 <script type="text/javascript">
     2     try {
     3         var proxy = new ActiveXObject("myLib.MyClass");
     4         var num = proxy.Add();
     5         alert(num);
     6     }
     7     catch (e) {
     8         alert(e.message);
     9     }
    10 </script>

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

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

     1  [ComVisible(true)]
     2     [Guid("317E81A0-C55C-36B2-B259-BEB1A4F3919E")]
     3     public class MyClass
     4     {
     5         public int Add()
     6         {
     7             int a = 1;
     8             int b = 2;
     9             return a + b;
    10         }
    11     }

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

     

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

     弹出一个结果:3

     

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

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

              3、IE右键菜单的注册表项位置:HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerMenuExt

                

                 

              

               










  • 相关阅读:
    webapi支持session
    webapi返回数据同时支持xml与json
    webapi权限控制
    Asp.net 将js文件打包进dll 方法
    All Media to FLV asp.net在线视频自动转换并截图调试成功!
    未能从程序集“System.ServiceModel
    [javascript]浮动广告
    [python]multi thread tcp connect port scanner
    [vc]让你Y的用YY
    [python]扫描网站后台脚本
  • 原文地址:https://www.cnblogs.com/wangqiang3311/p/7095127.html
Copyright © 2011-2022 走看看