通过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
 
posted on 2012-01-06 20:10  清风拂过  阅读(2449)  评论(0编辑  收藏  举报