web调用客户端程序
2017-08-28 20:25
239 查看
背景
最近做一个集成需求,我们是B/S架构的,对方是C/S架构的,对方直接扔过来一个EXE连OCX都没有,让我们调用,也就是说,我们需要通过js程序去调用他们的客户端程序并传入多个参数,当时内心是崩溃的,网上查了些资料,发现还真的可以!下面开始。
原理
1.在注册表中把需要调用的exe注册一个调用协议 2.在浏览器中通过<a>标签来直接调用
设置注册表调用协议
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\EmrBrowser\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.一个<a>标签即可: <a href="Browser:// 0000513082 R475323015">测试调用EXE</a> 2.使用JQuery创建a标签调用: function sendReportsToPrinter() { 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下载
相关文章推荐
- Xamarin.Form中WebView调用JS代码和JS代码调用客户端程序
- web调用客户端程序
- 在web页中调用客户端程序的方法
- 在web页中调用客户端程序的方法
- WEB程序调用客户端程序
- WEB程序调用客户端程序
- Web服务的创建,发布以及客户端的调用
- 在客户端调用web服务
- [z]C# winForm 程序调用 Java WebService
- 基于Chrome浏览器调用客户端程序
- 通过使用客户端证书调用 Web 服务进行身份验证{转}
- 从客户端脚本调用 Web 服务
- 用Jersey构建RESTful服务4--通过jersey-client客户端调用Jersey的Web服务模拟CURD
- Java与WCF交互(二):WCF客户端调用Java web service【转】
- 自定义浏览器协议,实现web程序调用本地程序
- 通过Jersey客户端API调用RestFul风格的Web服务
- 实现PRC调用WebService的客户端程序
- 关于WCF REST(webHttpBinding ) 用法:服务端写法及客户端调用
- asp.net程序调用NTFS分区下Oracle客户端