• 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,创意比什么都重要。要善于去思考,细化每一个步骤细节,难题也就不难了;

  • 相关阅读:
    Java实现 蓝桥杯VIP 算法训练 一元三次方程
    Java实现 蓝桥杯VIP 算法训练 乘法表
    Java实现 蓝桥杯VIP 算法训练 矩阵加法
    Java实现 蓝桥杯VIP 算法训练 一元三次方程
    Java实现 蓝桥杯VIP 算法训练 平方计算
    Java实现 蓝桥杯VIP 算法训练 平方计算
    Java实现 蓝桥杯VIP 算法训练 平方计算
    Java实现 蓝桥杯VIP 算法训练 乘法表
    Java实现 蓝桥杯VIP 算法训练 乘法表
    监管只是压倒网盘业务的一根稻草,但不是主要原因(答案只有一个:成本!)
  • 原文地址:https://www.cnblogs.com/woshare/p/2552696.html
Copyright © 2020-2023  润新知