精华内容
下载资源
问答
  • 2020-07-20 17:35:41

    1. 背景

    项目中常用浏览器有Chrome和IE,对于web端启动本地exe客户端。早期,Chrome和IE都提供了ActiveXObject对象,以它的exec接口,只需传入本地exe客户端所在安装路径为参数便可启动客户端。现今,Chrome摒弃了该方式,IE仍有保留。

    2. 案例使用场景

    本案例主要实现兼容当前Chrome和IE浏览器,web端启动本地exe客户端的一种实现方案。

    3. 案例实现

    3.1 原理

    在注册表中注入自定义的协议,然后web端通过该协议调用启动客户端。

    3.2 批处理生成注册表文件

    以下批处理示例文件,实现生成打开记事本notepad.exe所需注册表文件,记事本安装目录为“C:\Windows\system32”,批处理文件命令行内容如下:

    OpenClient.bat文件:

    1.setlocal enabledelayedexpansion
    2.rem 如果注册表文件存在则删除
    3.del OpenClient.reg
    4.set str1=^\
    5.set str2=^\^\
    6.for /f "tokens=*" %%i in ("%~dp0") do (
    7.set regs=%%i
    8.set regs=!regs:%str1%=%str2%!
    9.
    10.echo Windows Registry Editor Version 5.00>>OpenClient.reg
    11.echo [HKEY_CLASSES_ROOT\OpenClient]>>OpenClient.reg
    12.echo @="OpenClient Protocol">>OpenClient.reg
    13.echo "URL Protocol"="">>OpenClient.reg
    14.
    15.echo [HKEY_CLASSES_ROOT\OpenClient\DefaultIcon]>>OpenClient.reg
    16.echo [HKEY_CLASSES_ROOT\OpenClient\shell]>>OpenClient.reg
    17.echo [HKEY_CLASSES_ROOT\OpenClient\shell\open]>>OpenClient.reg
    18.echo [HKEY_CLASSES_ROOT\OpenClient\shell\open\command]>>OpenClient.reg
    19.rem 客户端exe文件具体所在目录
    20.echo @="!regs!notepad.exe">>OpenClient.reg
    21.)
    

    批处理关键命令解释:

    命令解释
    rem注释
    echo 测试>>test.txt把“测试”写入到文件test.txt中
    %~dp0获取当前批处理文件所在的目录
    for循环把获取的Window下当前路径中的”\”全部替换成”\\”
    !regs!通过for循环处理过后的exe所在路径

    3.3 注册自定义协议

    双击运行批处理文件之后生成的注册文件内容如下:

    OpenClient.reg文件:

    1.Windows Registry Editor Version 5.00
    2.[HKEY_CLASSES_ROOT\OpenClient]
    3.@="OpenClient Protocol"
    4."URL Protocol"=""
    5.[HKEY_CLASSES_ROOT\OpenClient\DefaultIcon]
    6.[HKEY_CLASSES_ROOT\OpenClient\shell]
    7.[HKEY_CLASSES_ROOT\OpenClient\shell\open]
    8.[HKEY_CLASSES_ROOT\OpenClient\shell\open\command]
    9.@=" C:\\Windows\\system32\\notepad.exe"
    

    生成注册表文件内容说明:

    命令解释
    Windows Registry Editor Version 5.00注册表的版本
    @=” OpenClient Protocol”指定对应协议类型为OpenClient
    Command要执行的命令
    @=” C:\\Windows\\system32\\notepad.exe”命令值

    双击运行生成的OpenClient.reg文件,把生成的值和项添加到注册表中

    3.4 web调用启动客户端

    成功把自定义的协议写入到注册表之后,便可以在web端通过链接的方式,访问启动exe客户端:

    OpenClient.html文件:

    1.<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    2.<html xmlns="http://www.w3.org/1999/xhtml">
    3.<head>
    4.    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    5.</head>
    6.<body>
    7.<div>
    8.    <a href="OpenClient://">
    9.        启动客户端
    10.    </a>
    11.</div>
    12.</body>
    13.</html>
    

    双击运行OpenClient.html文件,点击“启动客户端” 后效果图如下,选中“始终在关联应用中打开这些类型的链接”,再点击“打开记事本”便可。

    3.5 提示

    有的Chrome浏览器版本,没有选择“始终在关联应用中打开这些类型的链接”,每次打开都提示是否打开,该问题可通过更换浏览器版本解决。

    4. 总结

    在web端启动本地安装的exe客户端,以上方案可以满足当前主流的Chrome和IE浏览器。由于第三方客户端安装目录不定,所以当安装目录变更时,需要再到exe文件所在目录下重新注册自定义协议,确保协议中command的命令值更新,能够找到需要启动的客户端。

    世界这么大,我只是一个永远需要不断学习和思考的小学生,感谢所有的挫折和困难。
    如果文章中一个点或者一句话对您有一点点帮助或者启发,请您点赞、评论或收藏一下,小伙伴们的智慧【三连】是对黔仔我最大的鼓励,谢谢。
    更多相关内容
  • ppty客户端安装包,深信服web调用客户端工具CRT、xshell配置安装控件
  • web调用客户端程序

    千次阅读 2017-08-28 20:25:27
    最近做一个集成需求,我们是B/S架构的,对方是C/S架构的,对方直接扔过来一个EXE连OCX都没有,让我们调用,也就是说,我们需要通过js程序去调用他们的客户端程序并传入多个参数,当时内心是崩溃的,网上查了些资料,...

    背景

    最近做一个集成需求,我们是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下载
    展开全文
  • 网页端调用客户端的cs 程序
  • web通过注册表调用BS客户端,修改注册表,通过注册程序调用本机BS客户端程序
  • 利用服务器端调用客户端可执行文件,本人测试过,完全可用.
  • 文件在线预览插件.rar web应用客户端调用本地应用打开文件,执行onlinePreviewFile-plugin.exe,在js中使用 location.href="onlinePreviewFile://...
  • WebService客户端调用WebService服务示例代码,java代码,纯手工,包括直接httpClient直接发送Saop报文调用和利用wsimport -keep 生成客户端代码后调用两种方式的示例。因涉及商务账户密码隐私,因此代码中的有些账号...
  • Web页面调用本地客户端程序并传参

    千次阅读 2019-05-17 11:13:15
    翻了不少资料,总的来说好像都要操作注册表调用客户端以及传参。 1.写了一个简单的WPF的Demo来接收参数,当接收到参数时弹出消息框。(只要是客户端应该都有个主入口来接收参数的) public partial class App...

    好久没跟新博客了,今天跟新2019年的第一篇博客,最近在做项目,需求就是Web页面调用本地客户端程序并传参,传参是为了避免客户端再次输入账号密码,直接跳过登录。


    翻了不少资料,总的来说好像都要操作注册表调用客户端以及传参。

    1.写了一个简单的WPF的Demo来接收参数,当接收到参数时弹出消息框。(只要是客户端应该都有个主入口来接收参数的

     public partial class App : Application
        {
            protected override void OnStartup(StartupEventArgs e)
            {
                if (e.Args.Length > 0)
                {
                    var window = new WPFDemo();
                    window.ShowEx(e.Args[0]);
                }
            }
        }
            /// <summary>
            /// 获取启动参数
            /// </summary>
            /// <param name="args"></param>
            public void ShowEx(string args)
            {
                MessageBox.Show(args);
            }

    2.往注册表写入信息,客户端文件路径以及参数占位符(个人理解)。

    Windows Registry Editor Version 5.00
    [HKEY_CLASSES_ROOT\WPFDemo]
    @=""
    "URL Protocol"=""
    [HKEY_CLASSES_ROOT\WPFDemo\DefaultIcon]
    @=C:\\Users\\Administrator\\Desktop\\新建文件夹\\WpfApp1.exe,1"
    [HKEY_CLASSES_ROOT\WPFDemo\shell]
    @=""
    [HKEY_CLASSES_ROOT\WPFDemo\shell\open]
    @=""
    [HKEY_CLASSES_ROOT\WPFDemo\shell\open\command]
    @="\"C:\\Users\\Administrator\\Desktop\\新建文件夹\\WpfApp1.exe\" \"%1\""

    绿色的是注册表中的项值,红色的是你要调用的客户端路径,注意双斜扛%1应该代表的是你要传的参。

    新建个txt文本,把以上文本复制进去保存。跟改下txt后缀名为reg,双击运行即可注册进注册表。

    然后win+R,输入regedit,打开注册表。检查注册成功了没,如下图注册成功。

    3.建个web页面测试下。WPFDemo要写你注册表中注册的项值,后面写传递给客户端的参数

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
          <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      </head>
        <body>
            <div>
                <a href="WPFDemo://admin,123456">
               open exe
                </a>
            </div>
        </body>
    </html>
    

    4.运行html,测试下是否成功。客户端弹出所传参数,说明接收成功了。到此web端调用本地客户端程序传参完成,后续客户端接收参数跳过登录也好,做其它操作也好都行了。


    好久没写博客了,正好项目需要研究这个问题,记录下来,以便以后自己遇到相同问题有个参照,当然能帮助到其他人就更好了。代码学习感觉是个长期积累的过程,不能松懈。

    展开全文
  • Springboot整合CXF发布Web service和客户端调用(用户和密码验证)打开及用
  • 调用接口方法之一,客户端方式调用,测试开发的webservices接口
  • SignalR Winform服务端、客户端实现,附带web调用Demo。案例包含了永久连接以及集线器两种实现方式,以及web调用、窗体程序下调用方式实现
  • Web客户端:用CC ++编写的与REST API交互的Web客户端
  • 概述了Web Service的特点和核心要素, 依据Delphi和Java对Web Service 的支持,给出了基于Java ,Delphi开发Web Service的流程, 并用一个Delphi调用Java开发Web Service应用程序来说明跨平台Web Service应用程序的步骤...
  • 通过winform使用httpclient客户端调用webApi接口,api使用oauth2.0权限控制,调用接口需要进行token获取认证、
  • .NET客户端调用Web API.pdf
  • 使用URLConnection,JAXB调用webservice的公共方法,简单好用,分享一下!
  • iOS使用web调用客户端APP(支付宝)

    千次阅读 2016-11-30 11:15:39
    这次做支付宝没有做集成,只是调用web端,然后提交form表单,在这里遇到了个问题,如果移动端安装了支付宝的前提下如何在web调用客户端APP,不多说,直接上方法: 在URL Types里不需要填写任何东西

    这次做支付宝没有做集成,只是调用web端,然后提交form表单,在这里遇到了个问题,如果移动端安装了支付宝的前提下如何在web端调用客户端APP,不多说,直接上方法:
    这里写图片描述
    在URL Types里不需要填写任何东西

    展开全文
  • 步骤一: 在l浏览器web中打开堡垒机管理页面,账号登录 步骤二: 选择管理的虚拟机,在红色标记处有多种客户端工具可以管理。 ...客户端工具控件下载 ...控件解压安装,填写...客户端工具调用如下图2 图1 图2 ...
  • Web客户端调用带参数的exe可执行程序,js调用的方法
  • 本实例是通过客户端通过WebService,调用数据库端方法的实例。 例子中包含cxf的jar包,在调用服务器端方法时,首先要在cmd中,通过wsdl生成服务器端的接口、接口实现类等相关的javal类。 cmd WSDL2JAVA ...
  • 开发工具VS2013,.NET4.5. 首先创建一个最基本的web service服务端,再创建一个客户端测试,详细源代码。
  • web页面在线照相,在线调用客户端摄像头进行拍照,同时支持手机登陆网页调用手机摄像头进行拍照,目前测试用的chrome浏览器,其他的暂时没有测试,欢迎大家提意见,后期会持续更新
  • 客户端调用webservice所需完整jar包,可用,客户端调用webservice所需完整jar包,可用
  • CSB-SDK是由CSB(云服务总线)产品打开的,用于HTTP或Web服务API的客户端调用SDK。 它负责调用开放的API并签署请求信息。 CSB-SDK中的内容 HTTP-SDK和WS-SDK都使用的通用基类 http-client调用HTTP API的客户端SDK ...
  • web网页调用本地cs客户端程序exe

    千次阅读 2017-10-16 21:07:00
    Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\WST...3.wen网页用a标签调用注册表 < a  href= " WST://" >   alt= "点击这里" >   a > 转载于:https://www.cnblogs.com/axin85/p/7678846.html
  • webservice四种发布方式及客户端调用
  • 测试调用webservice接口客户端所开发的接口示例
  • 下面小编就为大家分享一篇Ajax客户端异步调用服务端的实现方法(js调用cs文件),具有很好的参考价值,希望对大家有所帮助
  • C# VB.NET WebApi获取客户端的IP地址

    千次阅读 2021-11-30 10:06:23
    一、需求 : 需要根据IP地址不同返回不同的数据接口。 二、实现:新建一个类模块 Public Module HttpRequestMessageExtensions Private Const HttpContext As String = "MS_...以上就是WebApi 获取客户端请求的IP过程。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 572,937
精华内容 229,174
关键字:

web调用客户端

友情链接: DA14585_datasheet_2v1.zip