2021-08-22 通过网页打开本地应用

开发历程

从学长那里接了个小项目,其中有个主要的功能就是要实现通过网页去打开用户本地的百度网盘。

开始着手

对通过网页去打开本地应用的这方面功能之前是有过一些认识的,上学期的设计模式的课设,当时我的npy的课设就有一个通过在网页中打开cmd命令行的功能。当时就帮她弄了一下,当时是通过 ActiveX 插件弄得,当时知道存在着浏览器兼容方面的问题,只能在 IE 上实现功能,但是由于当时是课设的任务,基本只要实现了功能就可以,没有其他的太多的要求,也就没太在意。

没想到这么快就又接触了这个功能相关的需求,就按照之前的思路去着手做了。

一波三折

首先还是用的 ActiveX 插件去开发的,虽然知道有浏览器兼容方面的问题,但是当时觉得对于目的来说影响应该不大,后来弄出来之后,自己又觉得不妥,而且学长那边也不大认可这种方案,所以就另求他法了。

接下来通过搜索 CSDN 看到了 vbs( VBScript ) 可以写脚本去读取用户的注册表去获取到用户本地百度网盘的路径,并且可以通过获取到的路径去打开百度网盘。这点确实符合目前的需求,就开始按照这个思路去做了。vbs文件中的代码如下:

RegValue = CreateObject("Wscript.Shell").RegRead("HKEY_CURRENT_USER\SOFTWARE\Baidu\BaiduYunGuanjia\installDir")
Msgbox(RegValue)
CreateObject("Wscript.Shell").Run(RegValue & "\BaiduNetdisk.exe" &"")

执行 vbs 脚本文件,获取到百度网盘在本地的地址并且可以打开百度网盘。

下一步就是如何把 vbs 和我们的 html 结合的问题了,但是我发现在现在的前端代码中并不兼蓉 vbs 脚本代码,同样只有 IE 浏览器还在支持,其他的Chrome 等即使是写了 vbs 代码也不会在页面中显示任何东西。vbs 现在来说已经过时了,主流的浏览器支持的都是 JS 脚本语言,所以虽然这个 vbs 脚本可以在桌面上运行,但是并不能在页面中执行,无法满足我们的需求,这种方案同样被淘汰了。

在继续查找 CSDN 的过程中,发现了不少博客文章给出的解决方案都是采用自定义链接来实现的,但是熟读了部分文章之后我发现,这种方案要通过 .reg 文件去向注册表中添加表项,这样在一个新的用户的电脑上,要先执行 .reg 文件然后才能去通过自定义链接去在网页中打开本地的应用,这样并不能做到完全的自动,而且每个新用户都要将 .reg 中要打开的应用的路径改成该用户本地的应用的绝对路径才能使用,也做不到路径的动态生成。这种方案同样不满足我们的需求,自然也就被淘汰了。

柳暗花明

在上面三种方案都被淘汰之后,自己就觉得挺不服气的,为什么别人的就能做到,又不是什么之前没有的功能,就这样查了基本一天的 CSDN 和百度,结果铺天盖地全是之前的三种方案,大差不差。

到这里觉得沿着这个方向再继续查下去也没什么大的收获,干脆静下心来换一个方向。

这次我从能读取注册表入手,发现 node 能读取注册表而且能写后端还能运行本地应用,豁然开朗,利用之前学过的 node 知识简单搭了个服务器,然后在服务器上去进行读取注册表和运行本地应用的功能,果然可以,并且没有兼容性的问题。

部分代码

node 的部分代码如下,用的是 Express 框架:

app.get
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值