首页 > 资讯 > 科技 > 正文
2024-04-13 06:12

终于弄清楚如何在网盘网页上唤醒本地应用了

写在前面

以百度网盘为例,您可以通过页面打开本地百度网盘软件。 很多软件网站页面都有这个功能。 这件事一直让我很好奇。 这次终于有时间研究一下了。 本文讲的是mac的原理和它类似。

自定义协议

浏览器本身不具备唤醒本地应用程序的能力。 不然的话,如果你所有的应用程序都可以在任何网页上打开,那不是很乱吗? 然而,计算机系统本身可以通过配置自定义协议来支持此功能。

例如,当您用浏览器打开本地PDF时,您会发现它是file://path/xxx.pdf。 这是系统内置的协议。 浏览器可以调用该协议来读取文件。 。

同样,它也支持用户定义的协议来执行一些操作,而这个协议是在注册表中配置的。

配置自定义协议

这里我以VS Code为例。 最终,我想通过浏览器在我的电脑上打开VS Code。

我们先来写一个注册表文件

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\vscode]
@="URL:VSCode Protocol"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\vscode\shell]
[HKEY_CLASSES_ROOT\vscode\shell\open]
[HKEY_CLASSES_ROOT\vscode\shell\open\command]
@=""D:\VScode\Microsoft VS Code\Code.exe" "%1""

这里我逐行解释一下

5.00行表明该文件是一个注册表编辑器文件,它是告诉如何解析该文件的标准标头。 [\] 这是注册表项的开头。 这里,\表示创建一个名为的新密钥。 @="URL: " 在该键下,此行设置默认值(表示为 @ ),通过“URL: ”描述该键。 "URL "="" 该行设置一个名为 URL 的空字符串值。 这表明新密钥是 URI 协议。 [\\shell] 创建名为shell的子键,该子键是代表GUI界面处理的固定键。 [\\shell\open] 在shell下创建一个名为open的子项。 这是一个固定键,打开是用于执行打开操作的标准动作。 [\\shell\open\] 创建一个名为 open 的子项。 这是一个固定键,指定触发协议时要执行的命令。 @=""D:\\ VS Code\Code.exe" "%1"" 在“键”下,设置默认值所在的路径。 “%1”是传递给协议的任何参数的占位符,此处没有实际用途。

写入注册表文件后,我们将其另存为.reg,双击执行,在对话框中选择“是”,相应的注册表信息就创建完成了。

js本地打开页面_打开本地html_js打开本地路径html

可以通过注册表查看。

在浏览器中打开 VS Code

这时候我们打开浏览器,输入://open

可以看到和百度网盘一样,浏览器弹出一个查询对话框,然后就可以打开VS Code了。

如果你想在网页上打开它,很简单

cript>
  function openVSCode() {
    window.location.href = 'vscode://open/';
  }
cript>

写一段简单的JS代码就可以了。

写在最后

至此,我终于明白了这些知识。 这意味着在网盘的安装过程中,写入了注册表文件并定制了网盘的唤醒协议,然后才能被识别。

我还找到了这个注册表

它最初被称为协议(不区分大小写),可以使用://open 打开。

原文链接: