2011-05-30 25 views
1

我有一個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> 

任何幫助,將不勝感激。謝謝。

回答

3

我相信你的問題在於IE直接與Windows一起工作,因爲Firefox的目標是跨平臺的。假設你只想要這個工作在Windows上,你可以執行命令提示符

C:\Windows\System32\cmd.exe 

,並把它傳遞參數就像

start winword.exe 

然後,它會以同樣的方式運行執行。

+0

完美,Mike C!它像一個魅力一樣工作! – thiagoprzy 2011-05-31 12:53:06

+2

爲了防止某人對此感興趣,我通過了如下參數: parameters = [「/ c start」+ path];//路徑,在這種情況下,是'winword.exe' – thiagoprzy 2011-05-31 13:02:10

+0

更明確看到這裏http://stackoverflow.com/questions/6472435/running-exe-in-firefox-why-do-i-get-an - 錯誤 – 2011-06-25 16:14:46

相關問題