记录--终于搞懂了网盘网页是怎么唤醒本地应用了

这篇具有很好参考价值的文章主要介绍了记录--终于搞懂了网盘网页是怎么唤醒本地应用了。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助

记录--终于搞懂了网盘网页是怎么唤醒本地应用了

写在前面

用百度网盘举例,可以通过页面打开本机的百度网盘软件,很多软件的网站页面都有这个功能。这个事情一直令我比较好奇,这次终于有空抽时间来研究研究了,本篇讲的是Windows的,mac的原理与之类似,Mac文章已发布:(Mac版)终于搞懂了浏览器是怎么唤醒本地应用了。

自定义协议

本身单凭浏览器是没有唤醒本地应用这个能力的,不然随便一个网页都能打开你的所有应用那不就乱套了吗。但是电脑系统本身又可以支持这个能力,就是通过配置自定义协议。

举个例子,当你用浏览器打开一个本地的PDF的时候,你会发现上面是file://path/xxx.pdf,这就是系统内置的一个协议,浏览器可以调用这个协议进行文件读取。

那么与之类似的,windows本身也支持用户自定义协议来进行一些操作的,而这个协议就在注册表中进行配置。

配置自定义协议

这里我用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""

这里我逐行解释

  1. Windows Registry Editor Version 5.00 这行表明该文件是一个 Windows 注册表编辑器文件,这是标准的头部,用于告诉 Windows 如何解析文件。
  2. [HKEY_CLASSES_ROOT\vscode] 这是一个注册表键的开始。在这里,\vscode 表示创建一个名为 vscode 的新键。
  3. @="URL:VSCode Protocol"vscode 键下,这行设置了默认值(表示为 @ ),通过 "URL:VSCode Protocol" 对这个键进行描述。
  4. "URL Protocol"="" 这行是设置一个名为 URL Protocol 的空字符串值。这是代表这个新键是一个 URI 协议。
  5. [HKEY_CLASSES_ROOT\vscode\shell] 创建一个名为 shell 的子键,这是一个固定键,代表GUI界面的处理。
  6. [HKEY_CLASSES_ROOT\vscode\shell\open]shell 下创建一个名为 open 的子键。这耶是一个固定键,open 是一个标准动作,用来执行打开操作。
  7. [HKEY_CLASSES_ROOT\vscode\shell\open\command]open 下创建一个名为 command 的子键。这是一个固定键,指定了当协议被触发时要执行命令。
  8. @=""D:\VScode\Microsoft VS Code\Code.exe" "%1""command 键下,设置默认值为 VSCode 的路径。 "%1" 是一个占位符,用于表示传递给协议的任何参数,这里并无实际用处。

写好了注册表文件后,我们将其保存为 vscode.reg,并双击执行,对话框选择是,相应的注册表信息就被创建出来了。

记录--终于搞懂了网盘网页是怎么唤醒本地应用了

可以通过注册表中查看。

浏览器打开VS Code

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

记录--终于搞懂了网盘网页是怎么唤醒本地应用了

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

如果想要在网页上进行打开,也简单

<script>
  function openVSCode() {
    window.location.href = 'vscode://open/';
  }
</script>
<button onclick="openVSCode()">打开 VSCode</button>

写一个简单的JS代码即可。

写在最后

至此,终于是了解了这方面的知识。这就是说,在网盘安装的过程中,就写好了这个注册表文件,自定义了网盘的唤醒协议,才可以被识别。

而我也找到了这个注册表

记录--终于搞懂了网盘网页是怎么唤醒本地应用了

 原来叫baiduyunguanjia协议(不区分大小写),使用 baiduyunguanjia://open 可以打开。

记录--终于搞懂了网盘网页是怎么唤醒本地应用了

本文转载于:

https://juejin.cn/post/7320513026188460067

如果对您有所帮助,欢迎您点个关注,我会定时更新技术文档,大家一起讨论学习,一起进步。

 记录--终于搞懂了网盘网页是怎么唤醒本地应用了文章来源地址https://www.toymoban.com/news/detail-794910.html

到了这里,关于记录--终于搞懂了网盘网页是怎么唤醒本地应用了的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 今天,我终于学懂了C++中的引用

    本篇博客全站热榜排名:2 Hello,大家好,今天我们就来聊聊有关C++中的引用知识📖 回忆一下我们曾经在写C语言的时候因为指针所引发的种种难题,特别是对于【两数交换】的时候因为函数内部的概念不会引发外部的变化,使得我们 需要传入两个需要交换数的地址 ,在函数

    2023年04月08日
    浏览(69)
  • 【设计模式】我终于读懂了迭代器模式。。。

    编写程序展示一个学校院系结构:需求是这样 要在一个页面中展示出学校的院系组成, 一个学校有多个学院, 一个学院有多个系。 如图: 将学院看做是学校的子类,系是学院的子类,这样实际上是站在组织大小来进行分层次的 实际上我们的要求是 :在一个页面中展示出学

    2024年02月02日
    浏览(36)
  • 【设计模式】我终于读懂了观察者模式。。。

    气象站可以将每天测量到的温度,湿度,气压等等以公告的形式发布出去(比如发布到自己的网站或第三方)。 需要设计开放型 API,便于其他第三方也能接入气象站获取数据。 提供温度、气压和湿度的接口 测量数据更新时,要能实时的通知给第三方 传统的设计方案 CurrentCon

    2024年02月06日
    浏览(39)
  • 【数据结构篇】-树(共计两万字,你真的搞懂了它吗)

    友情链接:C/C++系列系统学习目录 (一)树的定义 之前我们一直在谈的是一对一的线性结构,可现实中,还有很多一对多的情况需要处理,所以我们需要研究这种一对多的数据结构——“树” 树:树是由n(n=0)个有限结点组成一个具有层次关系的集合。当n = 0时,称为空树

    2023年04月08日
    浏览(37)
  • 终于搞懂动态代理了!

    学习动态代理之前我们需要一些前置知识点: 学一点关于JVM类加载的知识 Java反射,看完就会用 然后我们从设计模式中的代理模式开始说。 代理模式中有3个角色: •  Subject抽象角色 :负责定义RealSubject和Proxy应该实现的接口。 •  RealSubject真实角色 :真正完成业务服务功

    2024年02月03日
    浏览(41)
  • JavaWeb过滤器(Filter)详解,是时候该把过滤器彻底搞懂了(万字说明)

            注意:这篇文章很长,学习完后将会解决你对于过滤器(Filter)的所有疑惑,下面将通过理论和代码的结合来进行讲解演示.....    目录 基本介绍 过滤器原理 过滤器(Filter)接口 使用过滤器(Filter) 创建过滤器(Fliter) 使用过滤器(Filter) 配置过滤器(Filter)拦截路径  注解方式

    2024年02月02日
    浏览(37)
  • 想打印k8s资源YAML结果搞懂了Client-Side & Server-Side Apply

    由于查看k8s资源YAML时常看到沉长的YAML与手写的格式,相差甚远不利于阅读,经过探索官方文档,才理解什么是Client-Side Server-Side Apply。 先看一下我用client-go在生成Deployment的YAML格式,核心代码如下: 效果: 之前一直有这样一个困扰,例如这样的一个Pod资源,可以看到像 ku

    2024年02月03日
    浏览(39)
  • 【Java之JAR包解析】(一)如果你也跟我一样搞懂了rt.jar,那真的泰裤辣! · 上篇~

    JAR (Java ARchive) 是一种 Java 打包文件格式,它可以 将一组 Java 类文件、相关资源和元数据打包到一个单独的文件中 。JAR 文件通常用于分发 Java 应用程序或库,并且可以在不同平台上运行。 JAR 包是一种方便的方式来组织和管理 Java 代码和依赖项,并且可以轻松地与其他开发人

    2024年02月04日
    浏览(49)
  • 终于搞懂如何用Java去除HTML标签了

    在我平时的工作中,偶尔会用 Java 做一些解析HTML的工作。有的时候我需要删除所有的HTML标签,只保留纯文字内容。这个问题在做过一些爬虫工作的朋友来说很简单。下面来说说,我们平时使用到的集中解析的方法。 通过爬虫爬到的HTML内容,从程序角度来讲,就是一个字符串

    2023年04月26日
    浏览(38)
  • ts 终于搞懂TS中的泛型啦! | typescript 入门指南 04

    大家好,我是王天~ 这篇文章是 ts入门指南系列中第四篇,主要讲解ts中的泛型应用,泛型在ts中是比较重要的概念,我花挺长时间才搞明白的,希望能帮助到大家 ~ ** ts 入门指南系列 ** Ts和Js 谁更适合前端开发?| typescript 入门指南 01 详解tsconfig.json 配置文件 | 02 ts入门指南

    2024年02月08日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包