自定义Protocol URL从浏览器运行本地应用

参考:https://blog.csdn.net/zssureqh/article/details/25828683

摘要:最近做一个web打印插件。浏览器访问web系统,点击打印按钮后弹出打印预览界面,可以保存(pdf,HTML,doc,xls等)或者打印成纸质文件。

一、设计

用java报表工具设计C/S客户端,客户从web系统下载到本地安装。客户在浏览器点击打印按钮,浏览器自定义协议启动本地打印程序。本地打印程序获取打印数据,然后进行打印。

业务难点

1. 浏览器如何启动本地打印程序?

2. 本地打印程序如何请求打印数据?

接下来上面两个问题一一解答。

二、浏览器如何启动本地打印程序

URL Protocol,没错就是标题里所说的自定义协议。这玩意儿大家最常见的比如迅雷、电驴等。我们平时在电影天堂下载电影的时候点击链接浏览器会启动本地迅雷进行下载。

下面是某部电影的下载链接浏览器检查元素后

<a href="thunder://QUFmdHA6Ly95Z2R5ODp5Z2R5OEB5ZzQ1Lm..."/>

这里的"thunder"就是url protocol。这个协议需要注册到本地电脑注册表,具体请看这个链接,博主写的非常详细。Url Protocol自定义协议实现调用本地程序

我这里把这个过程封装成 bat 批处理命令,双击后自动写入到注册表。这里自定义协议名称为 myprotocol。

首先看看我的打印插件目录

PrintPlugin

|—注册.bat

|—打印程序.exe

注册.bat

@echo off
echo =====================注册打印控件===================
echo 注册打印控件到注册表,360等杀毒软件误报请“允许运行”
echo ====================================================
echo 请按任意键开始注册
pause>nul
set v=%~dp0
echo Windows Registry Editor Version 5.00 >regist.reg
echo [HKEY_CLASSES_ROOT\myprotocol] >>regist.reg
echo "URL Protocol"="%v:\=\\%打印程序.exe" >>regist.reg
echo @="myprotocol" >>regist.reg
echo [HKEY_CLASSES_ROOT\myprotocol\DefaultIcon] >>regist.reg
echo @="%v:\=\\%打印程序.exe,1" >>regist.reg
echo [HKEY_CLASSES_ROOT\myprotocol\shell] >>regist.reg
echo [HKEY_CLASSES_ROOT\myprotocol\shell\open] >>regist.reg
echo [HKEY_CLASSES_ROOT\myprotocol\shell\open\command] >>regist.reg
echo @="\"%v:\=\\%打印程序.exe\" \"%%1\"" >>regist.reg
regedit /s %v%regist.reg
del /q regist.reg
echo 打印控件注册成功,按任意键退出
pause>nul

bat 语法很简单,双击运行命令生成regist.reg临时文件,并且运行regist.reg,然后静默删除regist.reg文件。

打印程序.exe是我制作的打印客户端启动入口。

在浏览器里我们可以这样调用我们的打印程序

<ahref="myprotocol://key">点击打印</a>

三、 本地打印程序如何请求打印数据?

请求过程:点击打印→服务端生成打印数据和key,然后把key返回到浏览器→执行myprotocol→本地打印程序通过key从服务端获取打印数据

实际过程中我们完全可以把key换成链接,如此我们的打印客户端通用性会更强。这样客户端直接以这个链接去获取打印数据。不用关心如何取数据,它只是用自己拿到的链接请求打印数据。比如

<ahref="myprotocol://http://数据请求链接">点击打印</a>
**java程序如何获取windows传入的参数?**
这是java基础,我们都知道main函数是java程序启动的入口。

publicstaticvoidmain(String[] args){

   Systemo.out.println(args[0]);//这就是我们传入的key}

四、测试效果

找一个浏览器链接跳转按钮,修改链接,然后点击按钮进行测试

调用FMMonitor不会弹报错框,效果给力。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
利用URL协议实现网页调用本地应用程序并传参的方法主要有以下几个步骤: 1. 创建一个自定义URL协议:首先需要创建一个自定义URL协议,比如"myapp://",用于标识要调用的本地应用程序。 2. 在本地应用程序中注册URL协议:在本地应用程序的配置文件中注册URL协议,指明该协议与应用程序的关联,以便正确打开应用程序。 3. 在网页中设置链接:在网页中设置一个链接,并使用上述自定义URL协议来调用本地应用程序。例如,使用"myapp://"的链接来打开目标应用程序。 4. 传递参数:在URL中添加参数,以便将需要传递给本地应用程序的数据传输过去。可以将参数添加在URL的查询字符串部分,使用"?"符号将URL与参数分隔开,并使用"&"符号将多个参数连接起来。 5. 本地应用程序接受参数:在本地应用程序中,通过解析URL获取传递过来的参数。可以使用JavaScript、Objective-C、Java等不同语言来处理URL并获取参数。 6. 处理参数逻辑:根据传递过来的参数,本地应用程序可以执行相应的逻辑处理,比如展示特定的界面、进行数据处理等。 总之,利用URL协议实现网页调用本地应用程序传参,关键是通过自定义URL协议来建立网页和应用程序的通信桥梁,然后通过URL传递参数,最终由应用程序接受参数并执行相应的逻辑处理。这种方式可以方便地在网页中调用本地应用程序,并实现数据的传递。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值