我有一个Intranet Web应用程序,该应用程序需要运行一些外部应用程序,例如Word,记事本和其他特定的应用程序...我的代码允许使用IE(ActiveX)和Firefox(XPCOM)进行访问。当我使用整个路径时(例如“ C:\ windows \ notepad.exe”),我可以在两个浏览器中运行,但问题是:某些应用程序的版本很多,例如Microsoft Word(2003、2007、2010)。 。),并且本地路径始终是不同的,但是,如果在Windows中使用“运行...”选项,则只能输入“ winword.exe”,并且除了版本外,还只能加载MS Word。如果仅将文件名传递给IE中的ActiveX,则可以调用MS Word,但在Firefox中,如果使用XPCOM,则不能。因此,我的问题是:有什么方法可以使XPCOM代码仅使用相对路径(文件名)来运行MS Word?我已经测试了所有方法,但没有成功。
这是我的代码:
function RunExe(path) {
try {
var ua = navigator.userAgent.toLowerCase();
if (ua.indexOf("msie") != -1) {
MyObject = new ActiveXObject("WScript.Shell")
MyObject.Run(path);
} else {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var exe = window.Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
exe.initWithPath(path);
var run = window.Components.classes['@mozilla.org/process/util;1'].createInstance(Components.interfaces.nsIProcess);
run.init(exe);
var parameters = [""];
run.run(false, parameters, parameters.length);
}
} catch (ex) {
alert(ex.toString());
}
}
呼叫如下:
<a href="#" onclick="javascript:RunExe('winword.exe');">Open Word</a>
任何帮助,将不胜感激。谢谢。
最佳答案
我认为您的问题在于IE直接与Windows兼容,因为Firefox旨在跨平台。假设您只希望它在Windows上运行,则可以执行命令提示符
C:\Windows\System32\cmd.exe
并传递一个像
start winword.exe
然后,它将以与运行相同的方式执行。