Bunun için nsIProcess kullanırsınız. Durumunuzda, hangi uygulamayı çalıştırmak istediğinizi bilmediğinizden dolayı, işler daha karmaşık hale getirilir - genellikle c:\windows\system32\ping.exe
olur, ancak emin olamazsınız. Eğer PATH
çevre değişken kendiniz ayrıştırmak istemiyorsanız komut satırı kabuğu sizin için bunu yapabilirsiniz:
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);
Başvuru için
: COMSPEC
environment variable, nsIEnvironment.
Verileri işlemden geri alamazsınız, tamamlandığında bildirim alıp başarısız olup olmadığını öğrenebilirsiniz. Komutun çıktısını almak istiyorsanız, çıktıyı bir dosyaya yönlendirmelisiniz (kabuk aracılığıyla ping stackoverflow.org > c:\\temp\\foo.txt
komutunu çalıştırın) ve daha sonra bu dosyayı okuyun.