zoukankan      html  css  js  c++  java
  • 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控件实现,判断用户有无安装迅雷),否则通过协议打开迅雷,并给迅雷程序传去下载种子的链接地址,等待用户点击确定下载。读懂这篇随笔之后,实现这个功能,岂不是很简单!

    注:这篇文章让我知道了没有做不到只有想不到,作为程序员我们应该要发展我们自身的ideal,创意比什么都重要。要善于去思考,细化每一个步骤细节,难题也就不难了;

  • 相关阅读:
    [CF864F]Cities Excursions
    [AGC012F]Prefix Median
    [TC-FindingFriends]Finding Friends
    [TC-HouseProtection]House Protection
    [CTSC2018]假面
    [CF877F]Ann and Books
    [CF509F]Progress Monitoring
    [CF735E/736C]Ostap and Tree
    CF611H New Year and Forgotten Tree
    CF538H Summer Dichotomy
  • 原文地址:https://www.cnblogs.com/woshare/p/2552696.html
Copyright © 2011-2022 走看看