最近一个项目中要点击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

1)首先写一个测试程序:

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程序了!

其它浏览器以后再试。

本文转自申龙斌的程序人生博客园博文,原文链接:http://www.cnblogs.com/speeding/p/3764739.html,如需转载请自行联系原作者

http://www.cnblogs.com/speeding/

WEB程序调用客户端程序相关推荐

  1. Flask实现Web服务调用Python程序

    Flask实现Web服务调用Python程序 通过Web服务调用Python写的手写数字识别算法模型,得到手写数字识别结果. 项目场景: 项目需求:将客户端的请求经由Web服务器转发给Flask程序实 ...

  2. IE调用客户端程序实例

    参考MSDN http://msdn.microsoft.com/en-us/library/aa767914.aspx 怎样为一个程序注册一个 URL 协议 核心代码为注册表 Windows Reg ...

  3. 基于 Cesium 的Web三维地球客户端程序开发框架

    Mars3D三维可视化平台,是火星科技研发的一款基于 WebGL 技术实现的三维客户端开发平台,基于Cesium优化提升与B/S架构设计,支持多行业扩展的轻量级高效能GIS开发平台,能够免安装.无插件 ...

  4. 自定义浏览器协议,实现web程序调用本地程序

    转自  http://blog.csdn.net/talking12391239/article/details/40712759 亲测可用 tencent://Message/?Uin=000000 ...

  5. js串口 Java web串口 调用客户端的串口 串口上云 硬件上云

    最新版本已经投入实际运行使用,demo版禁止未授权时投入商业使用 用Java串口开发,发现部署到服务器后连接不到本地的串口,蒙 于是准备用纯js调串口 发现兼容性不咋地 经过许多思考 我突然发现我会c ...

  6. windows下 C 程序 调用其他程序常见新的进程CreateProcess以及通过TerminateProcess终止进程

    WinAPI执行外部程序和创建新进程: CreateProcess(NULL,cmdOp,NULL,NULL,FALSE,CREATE_NEW_CONSOLE,NULL,NULL,&si,&a ...

  7. web调用服务器的exe文件,浏览器Web调用exe程序文件

    浏览器Web调用exe程序文件 Dwtowen • 2020 年 10 月 13 日 Loading... # 浏览器Web调用exe程序文件 ## IE 浏览器 在IE中可以使用ActiveXObj ...

  8. 从浏览器启动客户端程序的方法

    从浏览器页面上,启动用户本地的客户端程序的方法,常见的有两种. 一.Asynchronous Pluggable Protocols协议方式 MSDN或网络上搜索,即可找到相应的方法. 从浏览器启动客 ...

  9. linux下java调用matlab程序,linux_java调用windows_matlab程序

    0 说明 本文为研究java和matlab的混合编程,进行了详细的测试和探索,以解决linux环境下java程序调用matlab程序的一个应用. linux端的环境 :(运行java程序并调用wind ...

最新文章

  1. 来跟我一起分享技术、传递价值:阿里云MVP全球招募,火热启动!
  2. oracle 导入流程,Oracle数据库(旧)空间数据表创建与数据导入流程说明V2.0
  3. Python中__new__和__init__区别
  4. CPU为什么是方形而不是圆形的?
  5. matlab绘制二元一次函数图像_【八上数学】 一次函数必考知识点(下)
  6. E1 PCM复用设备能当程控交换机用吗?
  7. 电子游戏市场的演变————零售
  8. oracle 中的参数 optimizer_mod的各个参数的意义
  9. UnityShader6:最简单的顶点/片元着色器
  10. YARN调试过程中的常见问题
  11. J1939协议实用指南与J1939数据记录方案
  12. inode客户端连接成功上不了网_iNode智能客户端常见问题及解决办法
  13. Java的jdk版本梳理
  14. 正三角形二面体群表示为二阶矩阵形式
  15. 超级简单thinkphp微信小程序服务商分账。以及小程序普通支付,微信特约商户
  16. 手机号码归属地查询api接口
  17. 面经汇总--校招--金山办公
  18. sql中insert的几种用法
  19. 目标检测之R-CNN
  20. Spring Boot实现发送QQ邮件

热门文章

  1. sublime3快捷键
  2. Win32汇编基础1
  3. Ubuntu12.04 安装(无法将 grub-efi 软件包安装到/target/中,如果没有 GRUB 启动引导期,所安装的系统无法启动)...
  4. java开发环境以及数据类型
  5. 02-06 Python库-random
  6. python numpy库安装winerror5_求问安装numpy+mkl报错FileNotFoundError: [Errno 2] No such fi
  7. tcp滑动窗口_面试必备TCP(三):滑动窗口
  8. 广西大学计算机英语复试的内容,广西大学计算机专业的研究生复试时
  9. 测试 软通动力软件测试机试_5000字长文,计算机保研机试介绍及准备策略!高分过过过!...
  10. 3d 自动生成物体_根据 2D 图片自动生成 3D 图书封面的牛逼工具