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

文章目录

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

在这里插入图片描述

先研究一下网页源代码:

<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

在这里插入图片描述

程序执行:

在这里插入图片描述

参考

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值