本篇文章给大家谈谈javascript调用函数的方法有哪些,以及javascript调用客户端程序,希望对各位有所帮助,不要忘了收藏本站喔。
web项目中要调第三方客户端,于是归纳整理了js调用客户端exe程序的几种方法,如下:
方法一 : 使用ActiveXObject直接执行指定路径的.exe文件 ,此方法只针对IE浏览器
<html> <head> < language="java"> function Run(strPath){ try { var objShell = new ActiveXObject("w.shell"); if(!objShell){ alert('Could not get reference to WScript.Shell'); return; } objShell.exec(strPath); objShell = null; }catch(errorObject){ alert('Error: ' + errorObject.message); } } </> </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);
}
}