利用Register protocol实现网页调用桌面程序

腾讯官方通过 Tencent://Message/协议可以让QQ用户显示QQ/TM的在线状态发布在互联网上。这是一个典型的案例。

下面我们自己来实现这样的需求:

具体原理可参照如下:http://msdn.microsoft.com/en-us/library/Aa767914.aspx

 

要实现如上功能,最主要的还是对注册表的处理。新建一个注册表文件

 

Windows Registry Editor Version 5.00
 
[HKEY_CLASSES_ROOT/FinstoneRpt]
@="FRptProtocol"
"URL Protocol"="I://Release//CZBYReport.exe"
 
[HKEY_CLASSES_ROOT/FinstoneRpt/DefaultIcon]
@="I://Release//CZBYReport.exe,0"
 
[HKEY_CLASSES_ROOT/FinstoneRpt/shell]
 
[HKEY_CLASSES_ROOT/FinstoneRpt/shell/open]
 
[HKEY_CLASSES_ROOT/FinstoneRpt/shell/open/command]
@="/"I://Release//CZBYReport.exe/" /"%1/""

 

以上定义了协议名:FinstoneRpt,及相关调用处理程序的位置。各位可自行调整。将上述内容导入到注册表中,然后在相关网页里加上一个连接<a href="FinstoneRpt://message/?id=3e5065a6-19a0-41e6-afab-db7cc4bd3c76">test</a>,当点击时,则会调用注册表中记录的程序。当然该程序可以接受参数:就是href里的所有内容。可根据情况自行判断处理。

 

如需通过VS的安装程序实现安装时自动执行以上操作。在安装程序里,导入上述注册表文件,因为用户安装时的路径不一样,要定位注册表中记录的程序,只需在VS里将相关注册键值修改:

 

将涉及具体地址都一一改成[TARGETDIR]程序名,即可。

 

posted @ 2010-12-09 16:13  greystar  阅读(414)  评论(0编辑  收藏  举报