通过网页链接打开应用程序客户端的两种实现方式

 近期公司要做一个项目,其中一个需求就是通过网页链接能够打开我们的IM软件,于是我对QQ和MSN、阿里旺旺进行了一番研究。发现主要是通过两种方式来实现的:
第一种方式是修改注册表的方式,QQ和阿里旺旺就是通过这种方式实现的。基本方法就是在安装过程中或者是程序第一次启动时
在注册表创建类似下面的键项和键值,
QQ:
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT/Tencent]
@="TencentProtocol"
"URL Protocol"="C://Program Files//Tencent//QQ//Timwp.exe"

[HKEY_CLASSES_ROOT/Tencent/DefaultIcon]
@="C://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]
@="/"C://Program Files//Tencent//QQ//Timwp.exe/" /"%1/""

阿里旺旺:
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT/Alitalk]
"URL Protocol"=""

[HKEY_CLASSES_ROOT/Alitalk/Shell]

[HKEY_CLASSES_ROOT/Alitalk/Shell/Open]

[HKEY_CLASSES_ROOT/Alitalk/Shell/Open/Command]
@="/"C://Program Files//Alisoft//WangWang//WangWang.EXE/" %1"

当我们点击网页上的链接或者直接通过浏览器输入tencent://或Alitalk://这样的URL时,这些输入全部作为命令行参数传递给应用程序。
我们的客户端程序需要对这些输入进行解析,然后做出响应。

第二种方式需要使用apps(Asynchronous Pluggable Protocols),需要apps的规则编写一个COM组件,MSN就是这种方式.
安装MSN的过程中会注册msgrapp.8.5.1288.0816.dll(我的机器上是这个文件,MSN是8.5的),同时在注册表注册msnim这个自定义协议scheme,

代码如下:
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT/PROTOCOLS/Handler/msnim]
"CLSID"="{828030A1-22C1-4009-854F-8E305202313F}"

{828030A1-22C1-4009-854F-8E305202313F}就是这个协议对应的处理器(msgrapp.8.5.1288.0816.dll)的CLSID。

注册成功后,我们在浏览器中输入任何的以msnim:开头的URL请求都会发送到这个COM组件,由这个DLL来处理。

关于apps可以参考MSDN:

http://msdn2.microsoft.com/en-us/library/aa767916.aspx#About_URLs_and_Name_

没有更多推荐了,返回首页