Bạn sẽ sử dụng nsIProcess cho điều đó. Trong trường hợp của bạn, mọi thứ trở nên phức tạp hơn vì bạn không biết bạn muốn chạy ứng dụng nào - nó thường sẽ là c:\windows\system32\ping.exe
nhưng bạn không thể chắc chắn. Nếu bạn không muốn để phân tích biến PATH
môi trường bản thân bạn có thể làm cho vỏ dòng lệnh làm điều đó cho bạn:
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);
Để tham khảo: COMSPEC
environment variable, nsIEnvironment.
Lưu ý rằng bạn không thể nhận lại dữ liệu từ quy trình, bạn chỉ có thể nhận được thông báo khi quá trình này kết thúc và tìm hiểu xem nó có bị lỗi hay không. Nếu bạn muốn nhận được đầu ra của lệnh, bạn sẽ phải chuyển hướng đầu ra tới một tệp (chạy lệnh ping stackoverflow.org > c:\\temp\\foo.txt
qua trình bao) và đọc tệp đó sau đó.
Nguồn
2012-04-18 19:22:55