通过JS启动客户端应用程序以及自定义程序
最近公司要求做一个和BS结合的CS截屏程序,主要功能是通过BS的超链接启动客户端的应用程序。针对于像QQ、Word等,很简单即可启动,可是当启动我自己做的程序的时候,总是碰到找不到路径路径问题,
在网上搜索了诸多材料,也找到不少回答,在此进行整理。
1,首先就是BS利用js控制本地已注册的应用程序的启动
//控制启动QQ的js function RunQQ() { var QQ = new ActiveXObject("WScript.Shell"); //QQ.exec("D:\\Program Files\\Tencent\\QQ\\Bin\\QQ.exe");也可以启动应用程序 QQ.run("QQ.exe"); QQ = null; return false; } <%--启动QQ的HTML按钮--%> <input id="btn_QQ" type="button" value="启动QQ" onclick="RunQQ()" />
这样运行时,可能会提示加载控件,可以这样解决:
选择 IE浏览器上 工具----Internet选项---高级----允许活动内容在我的计算机上的文件中运行*(启用)
2,当客户端BS利用js控制用户自定义的应用程序的启动
要启动用户自己定义的应用程序,首先要在安装程序的时候修改注册表。
c#如何写注册表?
//写注册表 RegistryKey key = Registry.ClassesRoot.CreateSubKey("vip"); key.SetValue("", "URL:vip Protocol"); key.SetValue("URL Protocol",""); RegistryKey Subkey= key.CreateSubKey("DefaultICon"); Subkey.SetValue("", "exe文件路径"); Subkey = key.CreateSubKey("shell").CreateSubKey("open").CreateSubKey("Command"); Subkey.SetValue("","exe文件路径");
此处是exe文件路径是用户自定义应用程序的exe路径。
这段代码是在 注册表 HKEY_CLASSES_ROOT 下新建vip 的键
结构是这样的
HKEY_CLASSES_ROOT
vip
(Default) = "URL:vip Protocol"
URL Protocol= ""
DefaultIcon
(Default) = "c:\somepath\APPTest.exe"
shell
open
command
(Default) = "c:\somepath\APPTest.exe" "%1"
这样利用
<a href="vip:123-MonacoGP-19279-Senna">拍照</a>
这个协议即可打开应用程序。
当然在用户自定义程序必须接受这个vip传过来的值
EXE应用程序启动的时候接收链接传过来的 123-MonacoGP-19279-Senna字符串,你可以在winform 启动的时候捕获这个值
[STAThread] static void Main(string[] args) { if (args.Length > 0) { //arg[0]就是刚刚链接传过来的 // 赋值=arg[0]; } Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); }
参考:http://hi.baidu.com/xsunday/blog/item/f72634fa5420859459ee908f.html