2012-04-18 24 views
5

विंडोज कमांड को निष्पादित करने और फ़ायरफ़ॉक्स एडन का उपयोग करके इसका आउटपुट कैसे प्रदर्शित करें?फ़ायरफ़ॉक्स एडन से विंडोज कमांड कैसे निष्पादित करें?

उदाहरण के लिए: पिंग www.stackoverfow.com

मैं सिर्फ एक साथ एक बाइनरी फ़ाइल (या) निष्पादन योग्य पैक को क्रियान्वित करने या फिर एक खिड़कियों आदेश चलाकर फ़ायरफ़ॉक्स ऐड-ऑन विकास में और अधिक पता लगाने के लिए कोशिश कर रहा हूँ।

उत्तर

12

आप इसके लिए nsIProcess का उपयोग करेंगे। आपके मामले में चीजें अधिक जटिल होती हैं क्योंकि आप नहीं जानते कि आप कौन सा एप्लिकेशन चलाने के लिए चाहते हैं - यह आमतौर पर c:\windows\system32\ping.exe होगा लेकिन आप सुनिश्चित नहीं हो सकते हैं। आप PATH वातावरण चर खुद पार्स करने के लिए नहीं करना चाहते हैं आप कमांड लाइन खोल यह तुम्हारे लिए क्या कर सकते हैं:

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); 

संदर्भ के लिए: COMSPEC environment variable, nsIEnvironment

ध्यान दें कि आप प्रक्रिया से डेटा वापस प्राप्त नहीं कर सकते हैं, आप केवल समाप्त होने पर अधिसूचित हो सकते हैं और सीख सकते हैं कि यह विफल रहा है या नहीं। यदि आप कमांड का आउटपुट प्राप्त करना चाहते हैं तो आपको आउटपुट को एक फ़ाइल में रीडायरेक्ट करना होगा (ping stackoverflow.org > c:\\temp\\foo.txt शेल के माध्यम से कमांड चलाएं) और उस फ़ाइल को बाद में पढ़ें।