WEB程序调用客户端程序

本文介绍了如何通过注册自定义URL协议使浏览器启动本地应用程序的方法,包括编写简单的控制台程序接收参数、创建注册表文件以及解决注册过程中遇到的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 现在有很多B/S与C/S相结合的产品,会出现一种需求:从浏览器启动客户端的程序,并且如果客户端未安装相应程序,先提示安装。
    主流的几款产品:腾讯QQ、阿里旺旺、迅雷、PPLive等,都有实现了类似的功能。
    浏览器启动客户端程序可以通过注册自定义的Url协议来实现,而检测客户端是否安装程序需要利用ActiveX控件。

    最近一个项目中要点击WEB页面上的链接启动自己编写的程序,而且还要接收参数,google了1.5小时,终于初步试验通过了。

    尝试google了:web send message windows form, bs call cs program, custom protocol...多个关键字组合,发现这种技术叫

    registered URL protocol,在这篇文章里介绍得比较详细:

    http://msdn.microsoft.com/en-us/library/aa767914(v=vs.85).aspx

    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace Alert
    {
      class Program
      {
        static string ProcessInput(string s)
        {
           // TODO Verify and validate the input 
           // string as appropriate for your application.
           return s;
        }
    
        static void Main(string[] args)
        {
          Console.WriteLine("Alert.exe invoked with the following parameters.\r\n");
          Console.WriteLine("Raw command-line: \n\t" + Environment.CommandLine);
    
          Console.WriteLine("\n\nArguments:\n");
          foreach (string s in args)
          {
            Console.WriteLine("\t" + ProcessInput(s));
          }
          Console.WriteLine("\nPress any key to continue...");
          Console.ReadKey();
        }
      }
    }

    我把程序编译成edss.exe

    2)用notepad编辑一个文件,改名为edss.reg

    Windows Registry Editor Version 5.00

    [HKEY_CLASSES_ROOT\EDSS]
    @="URL:EDSS Protocol"
    "URL Protocol"=""

    [HKEY_CLASSES_ROOT\EDSS\DefaultIcon]
    @="\"D:\\alert\\edss.exe\""

    [HKEY_CLASSES_ROOT\EDSS\shell]

    [HKEY_CLASSES_ROOT\EDSS\shell\open]

    [HKEY_CLASSES_ROOT\EDSS\shell\open\command]
    @="\"d:\\alert\\edss.exe\" \"%1\""

    运行edss.reg后,总是提示有些注册表项写入不成功,折腾了半天,看了http等协议的定义,最后终于发现是360在干扰。

    关闭360安全卫士,注册表终于写入成功了!

    原来是360安全卫士阻止最后一个注册表项的写入:

    [HKEY_CLASSES_ROOT\EDSS\shell\open\command]
    @="\"d:\\alert\\edss.exe\" \"%1\""

    3)在IE中输入edss://hello,ie浏览器弹击一个安全警告窗口,确认后就正常启动了我的应用程序

    4)在chrome中试了一下不成功,后来发现在chrome中不能直接输入edss://hello来启动,必须写一个html页面。

    马上编写了一行html页面:<a href='edss://hello'> start my windows program </a>

    chrome也可以启动我的windows程序了!

    其它浏览器以后再试。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值