2012-04-18 27 views
5

Làm cách nào để thực thi lệnh windows và hiển thị đầu ra của nó bằng addon firefox?Làm cách nào để thực thi lệnh windows từ addon firefox?

Ví dụ: ping www.stackoverfow.com

Tôi chỉ cố gắng để khám phá thêm trong phát triển addon firefox bằng cách thực hiện một tập tin nhị phân (hoặc) thực thi đóng gói với nhau hoặc khác chạy một lệnh cửa sổ.

Trả lời

12

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 đó.

Các vấn đề liên quan