2012-04-18 17 views
5

Jak wykonać polecenie systemu Windows i wyświetlić jego wynik za pomocą dodatku firefox?Jak wykonać polecenie Windows z dodatku firefox?

Na przykład: ping www.stackoverfow.com

jestem po prostu staramy się zbadać bardziej w rozwoju addon firefox wykonując plik binarny (lub) wykonywalny pakowane razem lub w inny uruchomiony polecenia systemu Windows.

Odpowiedz

12

Do tego celu można użyć nsIProcess. W twoim przypadku rzeczy stają się bardziej skomplikowane, ponieważ nie wiesz, którą aplikację chcesz uruchomić - zwykle będzie to c:\windows\system32\ping.exe, ale nie możesz być tego pewien. Jeśli nie chcesz, aby analizować zmiennej PATH środowisku samemu można zrobić powłoka wiersza polecenia zrobi to za ciebie:

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); 

Dla porównania: COMSPEC environment variable, nsIEnvironment.

Należy pamiętać, że nie można odbierać danych z procesu, można jedynie otrzymać powiadomienie po zakończeniu i dowiedzieć się, czy się nie udało. Jeśli chcesz uzyskać dane wyjściowe polecenia, musisz przekierować dane wyjściowe do pliku (wykonaj komendę ping stackoverflow.org > c:\\temp\\foo.txt przez powłokę) i odczytaj ten plik później.

Powiązane problemy