项目中需要从网页中打开一个本地应用程序,并传递给应用程序启动参数
方法有很多,最简单的一种是通过自定义协议,类似于mailto http https 主流浏览器都支持
只需要在注册表中添加相应内容即可
官方叫做 Pluggable Protocol,浏览器只完成启动程序,传递参数工作,程序独立运行,不能与网页交互
比如
自定义协议名为DEMO,
要启动的应用程序完整路径为 C:\DIR\EXE.exe
Web 请求为 DEMO://AAA:a;BBB:b;CCC:c;
HKEY_CLASSES_ROOT DEMO (Default) = "URL:DEMO Protocol" URL Protocol = "" DefaultIcon (Default) = "C:\DIR\EXE.exe,1" shell open command (Default) = "C:\DIR\EXE.exe" "%1"
command 就是启动程序的命令行
官方文档中讲 %1 将会被替换为 协议内容 DEMO://AAA:a;BBB:b;CCC:c; 并且URI编码
但实际程序接收到的参数为 DEMO://AAA:a;BBB:b;CCC:c;/ 多出了一个字符 (测试环境 Firfox21.0 chrome27.0.1453.94 IE8 360浏览器)
注册表内容还可以添加到HKEY_LOCAL_MACHINE\SOFTWARE\Classes\下,结构与HKEY_CLASSES_ROOT相同
官方文档 http://msdn.microsoft.com/en-us/library/aa767914(v=vs.85).aspx