web调用客户端程序
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调用客户端程序的更多相关文章
- WEB程序调用客户端程序
最近一个项目中要点击WEB页面上的链接启动自己编写的程序,而且还要接收参数,google了1.5小时,终于初步试验通过了. 尝试google了:web send message windows for ...
- QtSoap开发web services客户端程序
首先需要下载QtSoap开源包,下载地址为: http://www.filestube.com/q/qtsoap+download, 我使用的是:qtsoap-2.6-opensource(不 ...
- winform客户端程序第一次调用webservice方法很慢的解决方法
.net2.0的winform客户端最常用的与服务端通信方式是通过webservice,最近在用dottrace对客户端做性能测试的时候发现,客户端程序启动以后,第一次调用某一个webservice的 ...
- Linux下用gSOAP开发Web Service服务端和客户端程序
网上本有一篇流传甚广的C版本的,我参考来实现,发现有不少问题,现在根据自己的开发经验将其修改,使用无误:另外,补充同样功能的C++版本,我想这个应该更有用,因为能用C++,当然好过受限于C. 1.gS ...
- Linux下用gSOAP开发Web Service服务端和客户端程序(一)
1.功能说明: 要开发的Web Service功能非常简单,就是一个add函数,将两个参数相加,返回其和. 2.C版本的程序: (1)头文件:SmsWBS.h,注释部分不可少,url部分的IP必须填写 ...
- Web调用Linux客户端remmina运维
相信你遇到过这样的场景,在浏览器网页中点击QQ图标咨询,就能唤起本机的装的qq或tim,下载百度网盘的资源的时候,点击链接浏览器会启动本地百度云进行下载. 最近因为项目需要,也要实现类似的操作,不 ...
- C# 客户端程序调用外部程序的三种实现
简介 我们用C#来开发客户端程序的时候,总会不可避免的需要调用外部程序或者访问网站,本篇博客介绍了三种调用外部应用的方法,供参考 实现 第一种是利用shell32.dll,实现ShellExecute ...
- web调用本地exe应用程序并传入参数
从网页中通过自定义URL Protocol调用本地程序,需要将协议写到注册表中.浏览器在解析到自定义URL Protocol之后,寻找注册表,通过注册表启动相应的程序并传入参数.协议里面需要记录本地程 ...
- Web服务器文件传输程序客户端程序实现
1. 客户端程序--主函数 客户端主程序的流程图如下: 主程序主要是分析输入的命令,根据不同命令调用不同的函数处理或者进行出错处理,函数代码如下: #include "common.h&qu ...
随机推荐
- Failed to call ScheduleShutdown in logind, proceeding with immediate shutdown: Access denied
装了fedora23后定时关机:sudo shutdown -h +60 弹出如下信息后立刻就关机了: Failed to call ScheduleShutdown in logind, proce ...
- C#学习笔记随笔(1)----C#中static关键字的作用
静态分配的,有两种情况: 1. 用在类里的属性.方法前面,这样的静态属性与方法不需要创建实例就能访问, 通过类名或对象名都能访问它,静态属性.方法只有“一份”:即如果一个类新建有N个 对象,这N 个对 ...
- JavaScript学习笔记(十三)——生成器(generator)
在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意! 如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/ ...
- 六、Hadoop学习笔记————调优之操作系统以及JVM
内核参数overcommit_memory 它是 内存分配策略 可选值:0.1.2.0, 表示内核将检查是否有足够的可用内存供应用进程使用:如果有足够的可用内存,内存申请允许:否则,内存申请失败,并 ...
- MyBatis物理分页的代码实现
一.分页 MyBatis有两种分页方法:内存分页,也就是假分页,本质是查出所有的数据然后根据游标的方式,截取需要的记录,如果数据量大,执行效率低,可能造成内存溢出.物理分页,就是数据库本身提供了分页方 ...
- LayoutInflater (转)
在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById().不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例 ...
- springboot学习(二)——springmvc配置使用
以下内容,如有问题,烦请指出,谢谢 上一篇讲解了springboot的helloworld部分,这一篇开始讲解如何使用springboot进行实际的应用开发,基本上寻着spring应用的路子来讲,从s ...
- 用swoole和websocket开发简单聊天室
首先,我想说下写代码的一些习惯,第一,任何可配置的参数或变量都要写到一个config文件中.第二,代码中一定要有日志记录和完善的报错并记录报错.言归正传,swoole应该是每个phper必须要了解的, ...
- Koltin——最详细的可见性修饰符详解
在Kotlin中,不管是类,对象,接口,构造函数,函数,属性及其设置器都具有可见性修饰符.Kotlin中的可见性修饰符共四种.即public.protected.private.internal.在不 ...
- PF_RING install in centos7
很多centos7是最小化安装. 这样很多kernel就没有安装全,而且很多开发库也没有. 在安装PF_RING过程中,会缺少很多依赖. 首先安装依赖包: yum -y install numactl ...