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.