当前位置: 首页 > news >正文

奇思妙想:超链接唤起本地应用

文章目录

  • 分析
  • 实现
  • 参考

很多人的博客都有这样的小玩意,点击之后就可以直接与博主进行对话,而且无需添加好友。

在这里插入图片描述

先研究一下网页源代码:

<a href="tencent://message/?uin=88888888&Site=qq&Menu=yes">联系我</a>

很明显,奥妙就在这个超链接中,先按照自己的思路来想,要打开本地 QQ,肯定分两步走:

  • 定位 QQ 软件路径
  • 传递给它一些参数启动

可怎么把QQ 跑起来呢,需要我们自己去启动一个线程吗?答案是否定的,Windows 操作系统考虑到了这一点,允许我们为自己的应用程序注册一个协议,具体参见:Registering an Application to a URI Scheme

分析

腾讯的 tencent://message 协议注册表如下:

Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\Tencent]
@="TencentProtocol"
"URL Protocol"="D:\\Program Files\\Tencent\\QQ\\Timwp.exe"[HKEY_CLASSES_ROOT\Tencent\DefaultIcon]
@="D:\\Program Files\\Tencent\\QQ\\Timwp.exe,1"[HKEY_CLASSES_ROOT\Tencent\shell][HKEY_CLASSES_ROOT\Tencent\shell\open][HKEY_CLASSES_ROOT\Tencent\shell\open\command]
@="\"D:\\Program Files\\Tencent\\QQ\\Timwp.exe\" \"%1\"" 

此注册表所实现的就是当浏览器(或其它)碰到 tencent://… 时,自动调用 Timwp.exe,并把 tencent://… 地址作为第一个参数传递给 Timwp.exe

  • HKEY_CLASSES_ROOT\Tencent:Tencent 就是协议名字
  • HKEY_CLASSES_ROOT\Tencent\shell\open\command:内部定义的地址来启动软件

实现

基于上述前提,我们编写如下 .reg 文件

Windows Registry Editor Version 5.00[HKEY_CURRENT_USER\Software\Classes\Demo]
@="MyDemo"
"URL Protocol"=""[HKEY_CURRENT_USER\Software\Classes\Demo\shell\open\command]
@="\"C:\\Users\\zzzzls\\Desktop\\demo.exe\" \"%1\""
// demo.exe
#include <stdio.h>
#include <stdlib.h>int main(int argc, char *argv[]){for (int i=0;i<=argc;i++){printf("%s\n", argv[i]);}system("pause");return 0;
}

浏览器输入:demo://run

在这里插入图片描述

程序执行:

在这里插入图片描述

参考

  • 由Tencent://Message协议想到的一个解决方案
  • 前端网页如何打开一个PC本地应用

相关文章:

奇思妙想:超链接唤起本地应用

文章目录分析实现参考很多人的博客都有这样的小玩意&#xff0c;点击之后就可以直接与博主进行对话&#xff0c;而且无需添加好友。 先研究一下网页源代码&#xff1a; <a href"tencent://message/?uin88888888&Siteqq&Menuyes">联系我</a>很明…...

初识数据结构——“数据结构与算法”

各位CSDN的uu们你们好呀&#xff0c;今天小雅兰进入一个全新的内容的学习&#xff0c;就是算法和数据结构啦&#xff0c;话不多说&#xff0c;让我们进入数据结构的世界吧 什么是数据结构&#xff1f; 什么是算法&#xff1f; 数据结构和算法的重要性 如何学好数据结构和算…...

华为OD机试Golang解题 - 计算网络信号

华为Od必看系列 华为OD机试 全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典文章目录 华为Od必看系列使用说明本期题目…...

ESP32编译及运行错误记录

1、打印格式不对 一般都是因为日志中某个参数打印格式不匹配造成。 ESP_LOGI(TAG, "[APP] Free memory: %lu bytes", esp_get_free_heap_size());//将之前的%d 改为%lu 2、配置载不对 这里选择了蓝牙模块需要引入蓝牙组件才能编译通过 idf.py menuconfig Component…...

GEE开发之降雨(CHIRPS)数据获取和分析

GEE开发之降雨CHIRPS数据获取和分析1.数据介绍2.初识CHIRPS2.1 代码一2.2 代码二3.逐日数据分析和获取4.逐月数据分析和获取4.1 代码一4.2 代码二(简洁)5.逐年数据分析和获取5.1 代码一5.2 代码二(简洁)前言&#xff1a;主要获取和分析UCSB-CHG/CHIRPS/DAILY的日数据、月数据和…...

TypeScript中面向对象

面向对象 要想面向对象&#xff0c;操作对象&#xff0c;首先便要拥有对象&#xff1b; 要创建对象&#xff0c;必须要先定义类&#xff0c;所谓的类可以理解为对象的模型&#xff1b; 程序中可以根据类创建指定类型的对象&#xff1b; 举例来说&#xff1a; 可以通过Perso…...

Transformer 模型:入门详解(1)

动动发财的小手&#xff0c;点个赞吧&#xff01; 简介 众所周知&#xff0c;transformer 架构是自然语言处理 (NLP) 领域的一项突破。它克服了 seq-to-seq 模型&#xff08;如 RNN 等&#xff09;无法捕获文本中的长期依赖性的局限性。事实证明&#xff0c;transformer 架构是…...

深入理解js中的new关键字

在js中我们经常会使用到new关键字&#xff0c;那我们在使用new关键字的时候&#xff0c;new到底做了什么呢&#xff1f;今天我们就来深入探究一下 1.初步使用 我们先来使用一下&#xff0c;这是一个正常操作 function Person() {this.name "John";}let person new…...

RT-Thread Nano(2) - 线程

参考:RT-Thread API参考手册: 线程管理 线程的分类:动态线程,静态线程 动态线程是系统自动从动态内存堆上分配栈空间的线程句柄(程序运行时再分配空间),静态线程是由用户分配栈空间与线程句柄(可以说是程序编译时已经分配好空间) 1.创建线程 创建一个动态线程 rt_thread_t …...

真香,Grafana开源Loki日志系统取代ELK?

一、Loki是什么&#xff1f; Loki是由Grafana Labs开源的一个水平可扩展、高可用性&#xff0c;多租户的日志聚合系统的日志聚合系统。它的设计初衷是为了解决在大规模分布式系统中&#xff0c;处理海量日志的问题。Loki采用了分布式的架构&#xff0c;并且与Prometheus、Graf…...

机器学习|多变量线性回归 | 吴恩达学习笔记

前文回顾&#xff1a;机器学习 | 线性回归&#xff08;单变量&#xff09; 目录 &#x1f4da;多维特征 &#x1f4da;多变量梯度下降 &#x1f4da;梯度下降法实践 &#x1f407;特征缩放 &#x1f407;学习率 &#x1f4da;特征和多项式回归 &#x1f4da;正规方程 &…...

高并发内存池

按照threadcache&#xff0c;centralcache&#xff0c;pagecache顺序所列 这里还需要一定的前期准备工作 首先是可以设计一个定长内存池 ObjectPool.h #pragma once #include<iostream> #include"Common.h" using std::cout; using std::endl; using std::…...

springboot mybatis-plus 对接 sqlserver 数据库 批处理的问题

问题&#xff1a; 在对接 sqlserver数据库的时候 主子表 保存的时候 子表批量保存 使用的 mybatis-plus提供的saveOrUpdateBatch 这个方法 但是 报错 报错内容为 &#xff1a; com.microsoft.sqlserver.jdbc.SQLServerException: 必须执行该语句才能获得结果。 框架版本 sprin…...

Acwing---843. n-皇后问题——DFS

n-皇后问题1.题目2.基本思想3.代码实现1.题目 n−皇后问题是指将 n 个皇后放在 nn 的国际象棋棋盘上&#xff0c;使得皇后不能相互攻击到&#xff0c;即任意两个皇后都不能处于同一行、同一列或同一斜线上。 现在给定整数 n&#xff0c;请你输出所有的满足条件的棋子摆法。 …...

Android事件分发机制

文章目录Android View事件分发机制&#xff1a;事件分发中的核心方法onTouchListener和onClickListener的优先级事件分发DOWN,MOVE,UP 事件分发CANCEL代码实践requestdisallowIntereptTouchEvent作用Android View事件分发机制&#xff1a; 事件分发中的核心方法 Android中事件…...

python版协同过滤算法图书管理系统

基于协同过滤算法的图书管理系统 一、简介&#xff08;v信&#xff1a;1257309054&#xff09; ​ 本系统基于推荐算法给用户实现精准推荐图书。 ​ 根据用户对物品或者信息的偏好&#xff0c;发现物品或者内容本身的相关性&#xff0c;或者是发现用户的相关性&#xff0c;然…...

Redis基础入门

文章目录前言一、redis是什么&#xff1f;二、安装步骤1.下载安装包2.安装三、Redis的数据类型redis是一种高级的key-value的存储系统&#xff0c;其中的key是字符串类型&#xff0c;尽可能满足如下几点&#xff1a;字符串(String)列表(List)集合(Set&#xff0c;不允许出现重复…...

【微服务】Feign实现远程调用和负载均衡

目录 1.什么是Feign 2 订单微服务集成Feign 2.1.引入依赖 2.2添加注解 2.3编写Feign的客户端 2.4修改OrderServiceImpl.java的远程调用方法 2.5重启订单服务&#xff0c;并验证 总结 1.什么是Feign Feign是Spring Cloud提供的⼀个声明式的伪Http客户端&#xff0c; 它…...

Windows使用QEMU搭建arm64 ubuntu 环境

1. 下载 QEMU&#xff1a; https://qemu.weilnetz.de/w64/ QEMU UEFI固件文件&#xff1a; https://releases.linaro.org/components/kernel/uefi-linaro/latest/release/qemu64/QEMU_EFI.fd arm64 Ubuntu镜像&#xff1a; http://cdimage.ubuntu.com/releases/20.04.3/rel…...

NodeJS安装

一、简介Node.js是一个让JavaScript运行在服务端的开发平台&#xff0c;Node.js不是一种独立的语言&#xff0c;简单的说 Node.js 就是运行在服务端的 JavaScript。npm其实是Node.js的包管理工具&#xff08;package manager&#xff09;&#xff0c;类似与 maven。二、安装步骤…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中&#xff0c;iftop是网络管理的得力助手&#xff0c;能实时监控网络流量、连接情况等&#xff0c;帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX&#xff08;不访问内存&#xff09;XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...