我有一個Intranet Web應用程序需要運行一些外部應用程序,如Word,記事本和其他特定的應用程序......我的代碼允許使用IE(ActiveX)和Firefox(XPCOM)進行訪問。當我使用整個路徑(比如「C:\ windows \ notepad.exe」)時,我可以在兩種瀏覽器中運行,但問題是:有許多版本適用於某些應用程序,如Microsoft Word(2003,2007,2010 .. 。),並且本地路徑總是不同的,但是如果我在Windows中使用「Run ...」選項,除了它的版本,我只能輸入「winword.exe」和MS Word加載。如果我只將文件名傳遞給IE中的ActiveX,我可以調用MS Word,但是在Firefox中,使用XPCOM,我沒有。所以,我的問題是:有沒有什麼辦法讓XPCOM代碼運行MS Word,只需要它的相對路徑(文件名)?我已經測試了整個方法,但沒有成功。如何使用Javascript/XPCOM作爲Windows「Run ...」打開.EXE?
這裏是我的代碼:
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>
任何幫助,將不勝感激。謝謝。
完美,Mike C!它像一個魅力一樣工作! – thiagoprzy 2011-05-31 12:53:06
爲了防止某人對此感興趣,我通過了如下參數: parameters = [「/ c start」+ path];//路徑,在這種情況下,是'winword.exe' – thiagoprzy 2011-05-31 13:02:10
更明確看到這裏http://stackoverflow.com/questions/6472435/running-exe-in-firefox-why-do-i-get-an - 錯誤 – 2011-06-25 16:14:46