网页上通过超链接直接打开PC应用
有时候我们会发现有些网页可以直接打开本地应用,比如在百度网盘网页版下载文件时,会自动打开本地的百度网盘软件。Visual Studio Code打开浏览器认证后也会转到本地引用,Unity官网打开本地的Unity Hub应用进行Unity的下载和更新等。
以下内容只针对Windows OS
,其它系统上无法测试,当然你要尝试也没问题
原理解析
其实要实现网页上调起本地应用这个功能也不复杂,主要就是依赖于自定义协议。
当点击了网页中的某个超链接时,浏览器会根据协议去寻找对应的调用,最基础的 http
协议就是使用 http://
来指定,浏览器接收到地址栏的输入后,进行一个http请求,其他的还有 ws://
以及他俩的安全版本 https://
和 wss://
等。
所以我们只要给浏览器知道我们自定义的协议就行了,比如我有一个 sc://
协议,浏览器根据这个协议打开对应的SC应用。其实随便一个都行,只要把能解析 sc
协议就行(不是)
具体实现
要想实现自定义协议,操作系统又是 Windows OS
,那必然是使用注册表来实现。
注册表有好几项,本次相关的配置位于 HEY_CLASSES_ROOT
项下面,HEY_CLASSES_ROOT
中存放着应用启动的相关信息,其中就包括了通过自定义协议来启动应用。
所以只需要在 HEY_CLASSES_ROOT
下面新建一个 sc
项,默认键内容为:URL:sc
,还需要一个空键,键名:URL Protocol
来指定这是一个协议,然后添加子健 shell
=>open
=>command
,command
默认键内容为要打开的应用所在位置。
一个自定义协议就完成了,在网页中添加一个超链接 sc://123
,点击即可打开对应的应用。