朝圣言
扫描关注朝圣言

手机扫描二维码

如何通过js来打开客户端的应用程序

朝圣言2016-05-01前端仕锦 15504 0A+A-

在网上获得了如下资料:

<html>
 <head></head>
 <body ms_positioning="GridLayout"> 
  <form id="Form1" method="post" runat="server">
    请输入要运行的程序:
   <br />
   <input name="exe" type="text" size="20" value="regedit" />
   <button class="button" onclick="Run(exe.value)">确定</button>
   <button class="button" onclick="exe.value=&quot;&quot;;">重新输入</button>
   <br /> 
   <button class="button" onclick="Run('notepad')">记事本</button>
   <br /> 
   <button class="button" onclick="Run('mspaint')">画图板</button>
   <br /> 
   <button class="button" onclick="Run('calc')">计算器</button>
   <br /> 
   <button class="button" onclick="Run('cmd')">cmd</button>
   <br /> 
   <button class="button" onclick="Run('Regedit')">Regedit</button>
   <br /> 
   <button class="button" onclick="Run('Msconfig')">Msconfig</button>
   <br /> 
   <button class="button" onclick="Run('file:///d:\hello.exe)">WINAMP</button>
   <br /> 
   <button class="button" onclick="Run('IEXPLORE.EXE')">IE</button>
   <br /> 
   <button class="button" onclick="Run('..')">..</button>
   <br /> 
   <button class="button" onclick="Run('%windir%')">%windir%</button>
   <br /> 
   <button class="button" onclick="Run('%temp%')">%temp%</button>
   <br /> 
   <button class="button" onclick="Run('file:///D:/Program%20Files/Tencent/qq.EXE')">WINAMP</button>
   <br /> 
  </form> 
  <script language="JavaScript"> 
function Run(command) 
{ 
window.oldOnError = window.onerror;
                window._command = command;
                window.onerror = function (err) 
                {
if (err.indexOf('utomation') != -1) 
{
alert('命令' + window._command + ' 已经被用户禁止!'); 
return true;
}
else 
return false;
}
                var wsh = new ActiveXObject('WScript.Shell');
                 if (wsh)
wsh.Run(command);
                window.onerror = window.oldOnError;
}
</script> 
 </body>
</html>

该段代码打开如:word,excel,notepad,画板等都能打开,
但是自已写的应用程序为什么打不开呢?报错说:
系统找不到指定的路径。

想要IE或word点击超链接打开本地的EXE应用程序,这个怎么办?

比如点击这样的链接

<a href="vip:123-MonacoGP-19279-Senna">打开我的协议</a>

将打开我的EXE应用程序?

首先你要修改注册表,要让IE看的懂像href="vip:123-MonacoGP-19279-Senna" 这样的协议.

//写注册表
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文件路径");

这段代码是在 注册表 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"

创建完以后当你点击这样(vip:123-MonacoGP-19279-Senna)的链接,就可以打开外部的自己定义的应用程序了.

当然winform 应用程序还可以接收你传过来的值

比如 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());
}


文章关键词
前端
js
发表评论