一、Java调用可执行程序
Runtime rn = Runtime.getRuntime();
Process p = null;
try {
String fileName = "D:/Program Files (x86)/RTX.exe";
//String fileName = "C:/Program Files (x86)/Tencent/QQ/QQProtect/Bin/QQProtect.exe";
p = rn.exec("\""+fileName+"\""); // \":处理路径中的空格
} catch (Exception e) {
System.out.println("Error exec AnyQ");
}
缺点:客户端调用后,打开的是服务器端的程序,因为该java代码是运行在服务器端,打开的自然是服务器端本地的应用程序。
二、Js调用可执行程序
try{
var strPath="D:\\Users\\zhuyapeng\\AppData\\Local\\Youdao\\Dict\\YodaoDict.exe";
//var strPath="C:\\Program Files (x86)\\Tencent\\QQ\\QQProtect\\Bin\\QQProtect.exe";
var objShell=new ActiveXObject("WScript.Shell");
if (objShell) {
objShell.Run("\""+strPath, 8, true); //程序会阻塞在此,直至客户端程序返回, "\"":解决目录包含空格问题
}
objShell=null;
window.status="操作结束。";
}catch(e){
}
解决办法:
1、将访问的路径加入IE可信任站点中
Internet选项 - 安全 - 可信任站点 - 站点 - 添加访问路径
2、启用 "对未标记为可安全执行脚本的ActiveX控件初始化并执行脚本"选项
Internet选项 - 安全 - 可信任站点 - 自定义级别 - 对未标记为可安全执行脚本的ActiveX控件初始化并执行脚本(启用)
三、修改协议调用可执行程序
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\bbfexe]
"URL Protocol"="D:\\Program Files (x86)\\RTX.exe"
@="TencentProtocol"
[HKEY_CLASSES_ROOT\bbfexe\DefaultIcon]
@="D:\\Program Files (x86)\\RTX.exe,1"
[HKEY_CLASSES_ROOT\bbfexe\shell]
[HKEY_CLASSES_ROOT\bbfexe\shell\open]
[HKEY_CLASSES_ROOT\bbfexe\shell\open\command]
@="\"D:\\Program Files (x86)\\RTX.exe\" \"123456\""
使用方法:
1、将以上代码保存为 .reg文件,然后双击该文件运行,将信息添加进注册表
2、通过点击<a href="bbfexe://123456">打开应用</a>超链接调用可执行程序
3、红色部分:为你对应的应用程序路径; 蓝色部分:为你自己命名的应用
如有错误还望指出!