在前端页面调用用户本地应用软件

143 阅读2分钟

项目给客户交付了软件测试版以后,客户提个需求,想要在前端页面中打开软件,像百度网盘在页面中保存文件时从网页端唤起百度网盘一样。
解决办法:给软件注册URL Scheme,在页面中使用该URL即可
参考文章:1. 掌握常用App的URL Scheme:实现深度链接与无缝跳转
2.前端web页面调起本地客户端exe

1. 什么是URL Scheme

URL Scheme是一种特殊类型的URL,它告诉操作系统应该如何处理特定的URL请求。当一个应用注册了一个URL Scheme后,用户就可以通过点击这个URL来直接打开该应用,并可能触发某些特定的功能或页面。
例如,当你点击一个指向“weixin://”的URL时,如果手机上安装了微信APP,微信APP将会被自动打开。如果没有安装微信,那么可能会显示一个错误消息或者提示用户下载微信。

2. URL Scheme的工作原理

URL Scheme的工作原理主要依赖于操作系统的URL处理机制。当一个设备上的浏览器或其他应用尝试打开一个URL时,操作系统会检查这个URL是否符合任何已注册的应用的URL Scheme。如果匹配,操作系统就会启动相应的应用,并将URL传递给应用进行进一步的处理。

3. 在window系统中注册给软件注册URL Scheme

以控制台应用URLSchemeDemo.exe为例,代码如下

static void Main(string[] args)
{
    if (args.Length>0)
    {
        Console.WriteLine(args[0]);
    }
    else
    {
        Console.WriteLine("No arguments passed");
    }
    Console.ReadKey();
}

创建URLSchemeDemo.reg向注册表中写入数据,为放在D盘根目录下的URLSchemeDemo.exe注册URL Scheme,代码如下:

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\URLSchemeDemo]
@="URL:URLSchemeDemo"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\URLSchemeDemo\shell\open\command]
@="\"D:\\URLSchemeDemo.exe\"  \"%1\""

注意:需要使用\"和\\转义"和\,使用%1接受参数。
执行脚本后,注册表内容如下

image.png

image.png

4. 在前端页面调用

前端调用代码如下:

<html>
    <body>
        <a  href="URLSchemeDemo://">唤起URLSchemeDemo无参</a>
        <a  href="URLSchemeDemo://你好">唤起URLSchemeDemo有参</a>
    </body>
</html>

image.png