Tencent://Message/协议的实现原理
腾讯官方通过 Tencent://Message/协议可以让QQ用户显示QQ/TM的在线状态发布在互联网上;并且点击 ,不用加好友也可以聊天:
官方链接: http://is.qq.com/webpresence/code.shtml
具体代码:<a href="tencent://message/?uin=215555521&Site=JooIT.com&Menu=yes">
<img border="0" SRC='http://wpa.qq.com/pa?p=1:215555521:3' alt="点击这里给我发消息">
</a>
但它是如何实现的呢?下面文章以及微软官方说明详细解释了其工作原理:
微软官方说明:http://msdn.microsoft.com/zh-cn/library/aa767914(en-us,VS.85).aspx
Register protocol,此文中对于 Windows、Linux 和 OS X 操作系统如何注册协议都有说明。比如说 Windows,其实只需写入注册表,即可实现协议与执行程序的关联。例如腾讯的Tencent://Message协议注册表如下:
[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,并通过Timwp.exe判断传入的参数格式,若正确则检查系统中是否存在TIMPlatform.exe进程,不存在则提示"系统检测到您的机器上没有启动QQ",若存在则判断是否有已经登陆的QQ,没有登陆的话则提示“请先登陆”,若有已登陆QQ则弹出对应QQ号码的聊天窗口.
阿里旺旺也应用了该方法,注册表表内容如下:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\aliim]
@=""
"URL Protocol"=""
[HKEY_CLASSES_ROOT\aliim\Shell]
[HKEY_CLASSES_ROOT\aliim\Shell\Open]
[HKEY_CLASSES_ROOT\aliim\Shell\Open\Command]
@="D:\\Program Files\\AliWangWang\\wwcmd.exe %1"
aliim:sendmsg?uid=cntaobao发送者帐号&touid=cntaobao接收者帐号