Si utilizzerà nsIProcess per quello. Nel tuo caso le cose sono rese più complicate perché non sai quale applicazione vuoi eseguire: di solito è c:\windows\system32\ping.exe
ma non puoi esserne certo. Se non si vuole analizzare la variabile PATH
ambiente da soli si può fare la shell a riga di comando di farlo per voi:
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);
Per riferimento: COMSPEC
environment variable, nsIEnvironment.
Nota che non è possibile ricevere dati dal processo, è possibile ricevere una notifica al termine e scoprire se non è riuscito. Se si desidera ottenere l'output del comando, sarà necessario reindirizzare l'output su un file (eseguire il comando ping stackoverflow.org > c:\\temp\\foo.txt
tramite shell) e leggere il file in seguito.
fonte
2012-04-18 19:22:55