2009-03-30 10 views
15

वहाँ जब एक सांत्वना आवेदन लिख .NET में करने के लिए उत्पादन के लिए एक दूसरे कंसोल बनाने के लिए एक तरीका है?क्या कंसोल एप्लिकेशन लिखते समय .NET में आउटपुट करने के लिए दूसरा कंसोल बनाने का कोई तरीका है?

उत्तर

19

ठीक है, आप एक नया cmd.exe प्रक्रिया शुरू करने और डेटा भेजने और प्राप्त करने के लिए stdio और stdout इस्तेमाल कर सकते हैं कर रहे हैं। MSDN पर

ProcessStartInfo psi = new ProcessStartInfo("cmd.exe") 
{ 
    RedirectStandardError = true, 
    RedirectStandardInput = true, 
    RedirectStandardOutput = true, 
    UseShellExecute = false 
}; 

Process p = Process.Start(psi); 

StreamWriter sw = p.StandardInput; 
StreamReader sr = p.StandardOutput; 

sw.WriteLine("Hello world!"); 
sr.Close(); 

अधिक जानकारी।

+10

हम्म। मैं इस Windows में काम करने के लिए 7 + नेट 4. आश्चर्य क्या बदल ... – LamonteCristo

+1

मैं यह या तो काम करने के लिए नहीं मिल सकता है प्राप्त नहीं कर सकते। प्रक्रिया शुरू कर दी हो जाता है, क्योंकि मैं कार्य प्रबंधक में देख सकते हैं, लेकिन कंसोल विंडो कभी नहीं दिखाई देता है, मैं करने के लिए ProcessStartInfo वस्तु की 'CreateNoWindow' और' WindowStyle' गुण क्या सेट की परवाह किए बिना। शायद यह विंडोज 7 पर अनुमतियों से संबंधित है? –

+0

या तो Win 8.1 पर मेरे लिए काम नहीं करता है। – Krummelz

-3

एक एकल कंसोल किसी भी प्रक्रिया से जुड़ा हुआ है। तो संक्षेप में आप नहीं कर सकते हैं। लेकिन वहाँ तरीके "नकली यह"

3

निम्नलिखित कंसोल विंडोज़ के अनुप्रयोग-निर्भर संख्या को बंद कर देता है और स्ट्रिंग डिक्शनरी के अंदर कंसोल के लिए मात्रा और पैरामीटर स्टोर करता है जिसे तब आवश्यक मात्रा में कंसोल ऐप्स उत्पन्न करने के लिए प्रेरित किया जाता है। केवल तभी प्रक्रिया प्रक्रिया की आवश्यकता होगी जब केवल एक ही स्पॉन्ग हो।

//Start looping dic recs and firing console 
foreach (DictionaryEntry tests in steps) 
{ 
    try 
    { 
     Process runCmd = new Process(); 
     runCmd.StartInfo.FileName = CONSOLE_NAME; 
     runCmd.StartInfo.UseShellExecute = true; 
     runCmd.StartInfo.RedirectStandardOutput = false; 
     runCmd.StartInfo.Arguments = tests.Value.ToString(); 

     if (cbShowConsole.Checked) 
     { 
      runCmd.StartInfo.CreateNoWindow = true; 
      runCmd.StartInfo.WindowStyle = ProcessWindowStyle.Normal; 
     } 
     else 
     { 
      runCmd.StartInfo.CreateNoWindow = false; 
      runCmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
     } 
     runCmd.Start();     
    } 
    catch (Exception ex) 
    { 
     string t1 = ex.Message; 
    } 
} 

नोट यह या तो छिपा हुआ (CreateNoWindow) या दृश्यमान चलाने के लिए है।

संबंधित मुद्दे