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. sql 触发器,看完后对CHK有更深的理解

    触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动调用执行的.而存储过程可以通过存储过程的名称被调用. 什么是触发器? 触发器对表进行插入.更新.删除 ...

  2. 2386:Lake Counting-poj

    总时间限制:  1000ms 内存限制:  65536kB 描述 Due to recent rains, water has pooled in various places in Farmer J ...

  3. CSS以图换字的9种方法

    前面的话 CSS以图换字的技术,很久都没人提起了.它是一种在h1标签内,使用图像替换文本元素的技术,使页面在设计和可访问性之间达到平衡.本文将详细介绍CSS以图换字的9种方法 文字隐藏 在h1标签中, ...

  4. 虚拟机下 solr7.1 cloud 集群搭建 (手动解压和官方脚本两种方式)

    准备工作: vmware workstation 12,OS使用的是ubuntu16.04,三台虚拟机搭建一个solr集群,zookeeper共用这三台虚拟机组成zookeeper集群. zookee ...

  5. vue搭建环境

    大早起的,没想自己起来那么早,既然起来了,就写点东西吧~最近在看Vue的东西,发现网上也是好多的资源,包括博客和视频 , 我是看的慕课网上的vue ,名字忘记了,价格148的,看了,也整理了笔记,看了 ...

  6. docker学习(一)

    docker的安装 (一)环境要求: 容器需要管理工具.runtime 和操作系统,选择如下: 1.管理工具 - Docker Engine 2.runtime - runc 3.操作系统 (二)安装 ...

  7. createElement的应用

    原生js表单生成列表实现原理 这里用到的一些方法有 insertBefore() createElement() appendChild() removeChild() and so on~~ < ...

  8. C# TreeView设置SelectedNode设置无效的问题

    在设置Treeview.SelectedNode = newTreeNode(找到的TreeNode)时,界面上没呈现选择状态. 此时可能是treeview没有获取焦点,但是即使没有焦点,也可以让选中 ...

  9. 【NOI2015】程序自动分析

    https://www.luogu.org/problem/show?pid=1955 并查集+离散化. 先执行所有x=y问题,即合并x和y. 再依次执行所有x!=y问题,即查询x和y是否处于同一集合 ...

  10. Mecanim动画系统

    序言:Mecanim动画系统是Unity4.0之后退出的新版动画系统,非常适合人类动画系统.本文是作为自己的学习来讲解的, 可能会有些啰嗦,但尽量把自己的坑都为大家列出来,让大家理解透彻. 一.文件的 ...