易语言资源网 - 做最全的易语言资源下载社区
精易论坛授权登录

通过浏览器拉起应用程序(私有协议)   [复制链接]

    2019-12-02 08:37:31
    2019开源大赛(第四届)
    易语言资源网
    6239 次浏览
    来源链接

各位朋友做协议时应该见过如下url:

tencent://message/?uin=88888&Site=bbs.125.la&Menu=yes

复制代码

在浏览器里打开这个连接,会唤起qq的聊天窗口,并且根据传递的参数88888,打开了与88888的强制聊天窗口,如下图:

又比如打开浏览器,输入

steam://install/943700

复制代码

居然会唤起steam的安装界面,安装某个游戏。

是否想知道他们是如何实现的呢?

通过注册表中的探索,发现了秘密:

导出注册表查看:

Windows Registry Editor Version 5.00


[HKEY_CLASSES_ROOT\steam]

@="URL:steam protocol"

"URL Protocol"=""


[HKEY_CLASSES_ROOT\steam\DefaultIcon]

@="Steam.exe"

[HKEY_CLASSES_ROOT\steam\Shell]


[HKEY_CLASSES_ROOT\steam\Shell\Open]


[HKEY_CLASSES_ROOT\steam\Shell\Open\Command]

@="\"C:\\Program Files (x86)\\Steam\\Steam.exe\" -- \"%1\""


原来是在这里的定义了私有协议,我们依葫芦画瓢,来定义一个自己的私有协议“Mofei”吧。

构造一个注册表:

Windows Registry Editor Version 5.00


[HKEY_CLASSES_ROOT\Mofei]

@="URL:Mofei Protocol Handler"

"URL Protocol"=""


[HKEY_CLASSES_ROOT\Mofei\shell]


[HKEY_CLASSES_ROOT\Mofei\shell\open]


[HKEY_CLASSES_ROOT\Mofei\shell\open\command]

@="C:\\Users\\Administrator\\Desktop\\test.exe \"%1\""


以上代码中"Mofei"为需要注册的协议名,例如Tencent/steam。

下面的HKEY_CLASSES_ROOT\Mofei\shell\open\command的键值“C:\\Users\\Administrator\\Desktop\\test.exe”为要处理的程序的路径。

可以将以上代码通过记事本保存为xx.reg,双击此注册表文件导入。也可以通过精易模块自行操作注册表来创建表项和键值。


此一步的目的是告诉windows,假如计算机请求的url是以"mofei://"为开头,就交给注册表中用户自定义的程序来处理,且整个请求的url内容作为启动参数,传递给应用程序。

例如在你的浏览器中打开 "mofei://hahaha",此时windows将会启动我们设定的test.exe程序,并且将"mofei://hahaha"作为启动参数传递给test.exe。


现在我们启动易语言,新建一个空白无窗口程序,写下如下代码:


窗口程序集名保 留保 留备 注
程序集1
子程序名返回值类型公开备 注
_启动子程序整数型请在本子程序中放置动态链接库初始化代码
变量名类 型静态数组备 注
aa文本型0

取命令行(aa)

信息框(aa[1], 0, ,)

返回(0)' 返回值被忽略。

将程序编译为test.exe,放置到桌面上(我们事先定义的路径)。

现在,我们打开任意浏览器(大部分浏览器都支持私有协议),输入我们注册的"mofei://hahaha",处于安全考虑,首次使用新注册的私有协议时浏览器程序会先询问是否允许,选择允许即可。

于是,你看到了如下界面,此时我们自己注册的私有协议就成功的拉起了我们的程序。

firefox和chrome都可以哦:

现在,我们可以取出参数供我们的程序使用。

窗口程序集名保 留保 留备 注
程序集1
子程序名返回值类型公开备 注
_启动子程序整数型请在本子程序中放置动态链接库初始化代码
变量名类 型静态数组备 注
aa文本型0

取命令行(aa)

信息框(取文本中间(aa[1], 9,取文本长度(aa[1])- 9), 0, ,)

返回(0)' 返回值被忽略。

用firefox来看一下执行结果。

个别浏览器会对传入的中文参数进行url编码,例如chrome,如果你的程序中未判断参数编码,就会造成如下状况,如下演示:

不止是浏览器可以唤起,连windows的资源管理器也可以唤起哦。

甚至连易语言也可以唤起哦。

方法很简单,学而时习之,赶快打开你的易语言自己去试试吧。

简单的应用就是这样了,我们可以通过他来实现各种骚操作。包括但不限于

“传参启动应用程序的某功能模块”

“编写cs端程序,在c端网页里插入标签,执行get或post,完成某些功能,防止浏览器F12抓包”

“打开thunder://连接唤起迅雷下载”

“视频网站中点击【在客户端播放】按钮唤起应用程序播放视频”

“H5网页游戏点击【开始游戏】按钮,唤起本地游戏客户端启动,自动登录账号密码开始游戏”


等等功能...这种骚套路可以在你的客户心目中为你加印象分哦。

赶快发动你的小脑袋,想想看还有什么千奇百怪的应用方式,看看该功能是否能契合你的商业项目,动手燥起来吧,骚年。



点我下载 (已有 143 次下载)

引用模块





引用支持库


源码文件名 支持库文件名 支持库标识
mofei.e 系统核心支持库 5.7 d09f2340818511d396f6aaf844c7e325


[错误报告]   上一篇:开课半个月写的一个自用采集文案/图片软件...     下一篇:文本逐字对比工具支持高亮显示...