web项目中要调第三方客户端,于是归纳整理了js调用客户端exe程序的几种方法,如下:
方法一 : 使用ActiveXObject直接执行指定路径的.exe文件 ,此方法只针对IE浏览器
<html> <head> <script language="javascript"> function Run(strPath){ try {var objShell = new ActiveXObject("wscript.shell"); if(!objShell){alert('Could not get reference to WScript.Shell');return;}objShell.exec(strPath); objShell = null; }catch(errorObject){alert('Error: ' + errorObject.message);} } </script> </head> <body> 请输入要运行的程序路径:<br> <input name=exe type=text size=20 value="D:\a.doc"> <BUTTON class=button οnclick="Run(exe.value)">确定</BUTTON> </body> </html>
方法二: 通过URL Protocol实现调用本地应用程序,任何浏览器都兼容
以下转载自 : Js调用exe程序方法(通过URL Protocol实现网页调用本地应用程序)
1.使用记事本(或其他文本编辑器)创建一个protocal.reg文件,并写入以下内容
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOTWebshell] @="URL:Webshell Protocol Handler" "URL Protocol"="" [HKEY_CLASSES_ROOTWebshellDefaultIcon] @="C:\Program Files (x86)\Tencent\WeChat\WeChat.exe" [HKEY_CLASSES_ROOTWebshellshell] [HKEY_CLASSES_ROOTWebshellshellopen] [HKEY_CLASSES_ROOTWebshellshellopencommand] @=""C:\Program Files (x86)\Tencent\WeChat\WeChat.exe" "%1""
2.修改参数
使用记事本打开文件后,按照下图说明修改相关参数
2.1修改连接名称
修改红框内名称自定义即可,全部使用英文字符(该名称即为调用时的href),共六处
2.2修改可执行文件路径
修改红框内可执行文件路径,共两处
需注意:文件路径中使用//分割
3.执行protocal.reg文件
4.创建调用连接
连接地址为 步骤1中所命名的链接名称,后面加://hello,(hello为传递参数,可任意添加)
C#写注册表
public static void CreateRegedit(string strkey,string value){try{RegistryKey RegKey = Registry.ClassesRoot;RegistryKey regkey =RegKey.OpenSubKey(strkey, true);if (regkey == null)regkey = RegKey.CreateSubKey(strkey);regkey.SetValue("", "URL openOffice Handler");regkey.SetValue("URL Protocol", "程序名称");RegistryKey regkeyDefaultIcon =regkey.OpenSubKey("DefaultIcon", true);if (regkeyDefaultIcon == null)regkeyDefaultIcon = regkey.CreateSubKey("DefaultIcon");regkeyDefaultIcon.SetValue("", Application.StartupPath + "\\程序名称.exe");RegistryKey regkeyShell =regkey.OpenSubKey("shell", true);if (regkeyShell == null)regkeyShell = regkey.CreateSubKey("shell");RegistryKey regkeyopen =regkeyShell.OpenSubKey("open", true);if (regkeyopen == null)regkeyopen = regkeyShell.CreateSubKey("open");RegistryKey regkeycommand =regkeyopen.OpenSubKey("command", true);if (regkeycommand == null)regkeycommand = regkeyopen.CreateSubKey("command");regkeycommand.SetValue("", Application.StartupPath + "\\程序名称.exe %1");RegKey.Close();RegistryKey RegUserKey = Registry.CurrentUser;RegistryKey regUserkey =RegUserKey.OpenSubKey(strkey, true);if (regUserkey == null)regUserkey = RegUserKey.CreateSubKey(strkey);RegistryKey reguserkeyDefaultIcon =regUserkey.OpenSubKey("DefaultIcon", true);if (reguserkeyDefaultIcon == null)reguserkeyDefaultIcon = regUserkey.CreateSubKey("DefaultIcon");reguserkeyDefaultIcon.SetValue("", Application.StartupPath + "\\程序名称.exe");RegUserKey.Close();}catch (Exception ex){LogManager.WriteError("CreateRegedit", ex.StackTrace);} }