Utilizaría nsIProcess para eso. En su caso, las cosas se complican porque no sabe qué aplicación desea ejecutar; generalmente será c:\windows\system32\ping.exe
, pero no puede estar seguro. Si no desea analizar la variable de entorno PATH
sí mismo que puede hacer que el shell de línea de comandos que lo haga por usted:
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);
Como referencia: COMSPEC
environment variable, nsIEnvironment.
Tenga en cuenta que no puede recibir datos del proceso, simplemente puede recibir una notificación cuando finalice y saber si falló. Si desea obtener la salida del comando, tendrá que redirigir la salida a un archivo (ejecute el comando ping stackoverflow.org > c:\\temp\\foo.txt
a través del shell) y lea ese archivo después.