IE浏览器—自定义地址协议详解(非转载)

        类似问题:实现一个类似迅雷下载的功能,用户点击下载链接,如果用户未安装迅雷,则弹出迅雷安装对话框,已经安装迅雷,则要求启动迅雷,并下载用户想要的种子。

        核心实现:最近开发客户端程序,被要求实现一个自定义的IE地址栏协议,目的是为了通过在IE地址栏中输入一串符合规则的命令,可以达到和客户端程序通信的效果。自己思索良久,并在网上查阅相关资料,发现皆是拷贝,而且内容表述很乱,所以想在这里写一篇随笔,以备其他童鞋查阅用,如有异议随便拍砖~~哈哈

        我这里实现的功能,主要是为了以后方便用户通过邮件,IE地址连接等方式可以方便的与客户端程序进行通信。

        要实现IE自定义地址协议,首先应该要在注册表里将协议定义好。如下:

        找到注册表里面的HKEY_CLASSES_ROOT项,在里面新建一个 项,我这里取名iDesk,这个项,就是协议的入口,接下来上图:  

        

        按照上图格式建项,其中command中数据的值是启动程序入口地址, 这点很重要,这个是你要与之通信的那个程序的安装地址,那么下面我来贴上实现上述功能的代码:

         ///   <summary>
        
///  创建注册表值
        
///   </summary>
        
///   <param name="value"> 程序路径 </param>
         public   static   void  CreateRegeStartKey( string  value)
        {
            
try
            {
                RegistryKey key 
=  Registry.ClassesRoot;
                RegistryKey iDesk 
=  key.CreateSubKey( " iDesk " );
                iDesk.SetValue(
"" " Url protocol " );
                iDesk.SetValue(
" Url protocol " , value);
                RegistryKey DefaultIcon 
=  key.CreateSubKey( " iDesk\\DefaultIcon " );
                DefaultIcon.SetValue(
"" , value  +   " ,0 " );
                RegistryKey command 
=  key.CreateSubKey( " iDesk\\shell\\open\\command " );
                command.SetValue(
"" string .Format( " \"{0}\",\"%1\" " , value));
            }
            
catch  (Exception ex)
            {
                ExceptionHandler.CreateExceptionLog(ex);
            }
        }

         有了注册表的这些项,那么下面与客户端程序通信就比较容易了,这些项要你在安装客户端的时候写进注册表的,你要是不想360弹出阻止窗口的话,最好给应用程序签一下名。

         我们在IE地址栏中输入iDesk://www.baidu.com ,这个时候IE浏览器将会寻找你在上面所设置的应用程序地址,并给应用程序传去消息,消息格式为:“,iDesk://www.baidu.com”,引号里面的内容是消息内容,当然,如果安全性较高的话,你可以给消息加密。              

         那么客户端如何接收消息呢,我想这个就比较简单了,这个要从入口函数的数组里面找,即从static void Main(string[] args)的args[]数组里面取,取出来将协议解析一下,任务就OK了。

         结束语:实现上面的功能这样看其实很简单,当然还有很多后续的工作等待我们去处理,但是把复杂的问题细化之后,然后各个击破,其实问题也就变得简单了。就像开头的问题一样,去实现一个迅雷下载功能类似,用户打开网址想要下载一个东西,点击链接地址,这个时候用户如果未安装迅雷,浏览器将会弹出迅雷下载的窗口,让用户下载迅雷(一个activeX控件实现,判断用户有无安装迅雷),否则通过协议打开迅雷,并给迅雷程序传去下载种子的链接地址,等待用户点击确定下载。读懂这篇随笔之后,实现这个功能,岂不是很简单!

转载于:https://www.cnblogs.com/yangtongnet/archive/2011/07/05/2098372.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值