我有一个 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
然后它将以与 Run 相同的方式执行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)