2018.3.15更新

惭愧今天才看到这篇博客http://www.cnblogs.com/leslies2/p/3727762.html,写的很赞,很全面,就是有点长,哈哈,不过看来搜索也是一门学问啊。


背景

最近做一个集成需求,我们是B/S架构的,对方是C/S架构的,对方直接扔过来一个EXE连OCX都没有,让我们调用,也就是说,我们需要通过js程序去调用他们的客户端程序并传入多个参数,当时内心是崩溃的,网上查了些资料,发现还真的可以!下面开始。

原理

1.在注册表中把需要调用的exe注册一个调用协议
2.在浏览器中通过标签来直接调用

设置注册表调用协议

    Windows Registry Editor Version 5.00

    [HKEY_CLASSES_ROOT\Browser]
@=""
"URL Protocol"="" [HKEY_CLASSES_ROOT\Browser\DefaultIcon]
@="D:\\MyCode\\learnTest\\RegisterURI\\wrapper.exe" [HKEY_CLASSES_ROOT\Browser\Shell]
@="" [HKEY_CLASSES_ROOT\Browser\Shell\Open]
@="" [HKEY_CLASSES_ROOT\Browser\Shell\Open\Command]
@="D:\\MyCode\\learnTest\\RegisterURI\\wrapper.exe %1"

说明:

     Browser:自定义的协议名称;

     D:\MyCode\learnTest\RegisterURI\wrapper.exe :调用的exe文件路径;

     %1 :代表传入的参数;

    以上内容可以直接保存到记事本里,修改为.reg文件,双击执行即可。

    当然,也可以regedit直接进注册表一级一级的设置,具体修改注册表自行搜索。

    文章末尾有demo可以下载参考

效果如图:

如何调用

1.一个标签即可:
测试调用EXE
2.使用JQuery创建a标签调用:

	function send() {
var link = $('<a href="Browser:// 0000513082 R475323015"></a>');
$('body').append(link);
link.get(0).click();
link.remove();
}

说明:

    (敲黑板~)此处重点,重点,重点

    Browser:// 定义的注册表协议名,会作为第一个参数传入,多个参数用空格分割即可,看下图,最后一个参数会自动添加/需要单独处理。

执行效果:

参考链接

1.https://msdn.microsoft.com/en-us/library/aa767914.aspx#app_ex  (msdn强烈推荐)
2.http://www.cnblogs.com/hwade/archive/2008/01/08/1029686.html
Demo下载

web调用客户端程序的更多相关文章

  1. WEB程序调用客户端程序

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

  2. QtSoap开发web services客户端程序

        首先需要下载QtSoap开源包,下载地址为: http://www.filestube.com/q/qtsoap+download, 我使用的是:qtsoap-2.6-opensource(不 ...

  3. winform客户端程序第一次调用webservice方法很慢的解决方法

    .net2.0的winform客户端最常用的与服务端通信方式是通过webservice,最近在用dottrace对客户端做性能测试的时候发现,客户端程序启动以后,第一次调用某一个webservice的 ...

  4. Linux下用gSOAP开发Web Service服务端和客户端程序

    网上本有一篇流传甚广的C版本的,我参考来实现,发现有不少问题,现在根据自己的开发经验将其修改,使用无误:另外,补充同样功能的C++版本,我想这个应该更有用,因为能用C++,当然好过受限于C. 1.gS ...

  5. Linux下用gSOAP开发Web Service服务端和客户端程序(一)

    1.功能说明: 要开发的Web Service功能非常简单,就是一个add函数,将两个参数相加,返回其和. 2.C版本的程序: (1)头文件:SmsWBS.h,注释部分不可少,url部分的IP必须填写 ...

  6. Web调用Linux客户端remmina运维

    相信你遇到过这样的场景,在浏览器网页中点击QQ图标咨询,就能唤起本机的装的qq或tim,下载百度网盘的资源的时候,点击链接浏览器会启动本地百度云进行下载.   最近因为项目需要,也要实现类似的操作,不 ...

  7. C# 客户端程序调用外部程序的三种实现

    简介 我们用C#来开发客户端程序的时候,总会不可避免的需要调用外部程序或者访问网站,本篇博客介绍了三种调用外部应用的方法,供参考 实现 第一种是利用shell32.dll,实现ShellExecute ...

  8. web调用本地exe应用程序并传入参数

    从网页中通过自定义URL Protocol调用本地程序,需要将协议写到注册表中.浏览器在解析到自定义URL Protocol之后,寻找注册表,通过注册表启动相应的程序并传入参数.协议里面需要记录本地程 ...

  9. Web服务器文件传输程序客户端程序实现

    1. 客户端程序--主函数 客户端主程序的流程图如下: 主程序主要是分析输入的命令,根据不同命令调用不同的函数处理或者进行出错处理,函数代码如下: #include "common.h&qu ...

随机推荐

  1. [线段树]P1047 校门外的树

    题目描述 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置:数轴上的每个整数点,即0,1,2,……,L,都种 ...

  2. 在没有DOM操作的日子里,我是怎么熬过来的(上)

    前言 在我动笔写这篇文章的时候,我刚刚从我的项目中删除了最后一行JQuery代码.至于我为何要这么做,请听闰土娓娓道来.前几年我还在想,假如有一天,前端世界里不能再直接操作dom了,我该怎么办?没想到 ...

  3. Could not resolve view with name '***' in servlet with name 'dispatcher'

    今天在开发中遇到了一个问题,控制层使用的是SpringMVC框架. @RequestMapping("historyDetail") private String History( ...

  4. c语言的字符串

    1. 字符串   1. 什么是字符串 ● 简单的字符串”itcast” ● 一个’i’是一个字符 ● 很多个字符组合在一起就是字符串了 2. 字符串的初始化 ● char a[] = “123”;   ...

  5. 在使用ajax实现三级联动调用数据库数据并通过调出的数据进行二级表单查询

    在使用ajax实现三级联动查询数据库数据后再使用ajax无刷新方式使用三级联动调出的数据进行二级查询 但是现在遇到问题,在二级查询的时候期望是将数据以表格的形式展示在三级联动的下方,但是现在在查询后会 ...

  6. JavaScript 性能优化技巧分享

    JavaScript 作为当前最为常见的直译式脚本语言,已经广泛应用于 Web 应用开发中.为了提高Web应用的性能,从 JavaScript 的性能优化方向入手,会是一个很好的选择. 本文从加载.上 ...

  7. codeforces #447 894A QAQ 894B Ralph And His Magic Field 894C Marco and GCD Sequence

    A.QAQ 题目大意:从给定的字符串中找出QAQ的个数,三个字母的位置可以不连续 思路:暴力求解,先找到A的位置,往前扫,往后扫寻找Q的个数q1,q2,然 后相乘得到q1*q2,这就是这个A能够找到的 ...

  8. CCF-201503-3-节日

    问题描述 试题编号: 201503-3 试题名称: 节日 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 有一类节日的日期并不是固定的,而是以"a月的第b个星期c&q ...

  9. XSS攻击原理及防御措施

    概述 XSS攻击是Web攻击中最常见的攻击方法之一,它是通过对网页注入可执行代码且成功地被浏览器 执行,达到攻击的目的,形成了一次有效XSS攻击,一旦攻击成功,它可以获取用户的联系人列 表,然后向联系 ...

  10. Java 代码质量

    被滥用的instanceof instanceof滥用, 或者直接强转, 大都数情况可以用方法override, 而且应当避免使用isA(), isB()之类的写法; 比如sonA和sonB都继承自p ...