2012-04-18 28 views
5

如何執行一個Windows命令並使用Firefox插件顯示它的輸出?如何從firefox插件執行windows命令?

例如: 平www.stackoverfow.com

我只是想通過執行打包的二進制文件(或)可執行在一起,否則在運行Windows命令探索更多的Firefox插件開發。

回答

12

你會使用nsIProcess。在你的情況下,事情變得更加複雜,因爲你不知道你想要運行哪個應用程序 - 它通常是c:\windows\system32\ping.exe,但是你不能確定。如果你不想自己解析PATH環境變量可以使命令行shell爲你做它:

Components.utils.import("resource://gre/modules/FileUtils.jsm"); 

var env = Components.classes["@mozilla.org/process/environment;1"] 
        .getService(Components.interfaces.nsIEnvironment); 
var shell = new FileUtils.File(env.get("COMSPEC")); 
var args = ["/c", "ping stackoverflow.org"]; 

var process = Components.classes["@mozilla.org/process/util;1"] 
         .createInstance(Components.interfaces.nsIProcess); 
process.init(shell); 
process.runAsync(args, args.length); 

參考:COMSPEC environment variablensIEnvironment

請注意,您無法從進程接收數據,只能在完成時收到通知,並瞭解是否失敗。如果你想獲得命令的輸出,你必須將輸出重定向到一個文件(通過shell運行ping stackoverflow.org > c:\\temp\\foo.txt命令),然後讀出該文件。