में प्रदर्शित करें। मैं एक बच्चे की प्रक्रिया को उत्पन्न कर रहा हूं जो एक दृश्य कंसोल विंडो में चलता है (यह एक बैच फ़ाइल है जो MSBuild चलाती है), और मैं आउटपुट उत्पन्न करना चाहता हूं दृश्य कंसोल विंडो में प्रदर्शित प्रक्रिया, साथ ही उस आउटपुट को कैप्चर करें ताकि मैं इसे कोड में संसाधित कर सकूं। मैं कई अन्य प्रश्न और MSDN ProcessStartInfo.RedirectStandardOutput और पसंद के साथ काम कर प्रलेखन पढ़ा है, और मैं पुनः निर्देशित धारा से आउटपुट को कैप्चर और ठीक कोड में इसे संसाधित कर सकते हैं:मानक आउटपुट कैप्चर करें और अभी भी इसे कंसोल विंडो
Process msBuild = new Process();
msBuild.StartInfo.FileName = "Build.bat";
msBuild.StartInfo.UseShellExecute = false;
msBuild.StartInfo.RedirectStandardOutput = true;
msBuild.Start();
string output = msBuild.StandardOutput.ReadToEnd();
msBuild.WaitForExit();
समस्या यह है कि है आउटपुट बाल प्रक्रिया की कंसोल विंडो में प्रदर्शित नहीं होता है; प्रक्रिया चल रही है, लेकिन स्क्रीन खत्म होने पर मुझे बस एक खाली कंसोल विंडो मिलती है, जो समाप्त होने पर गायब हो जाती है।
मुझे लगता है कि मैं वास्तविक बाल प्रक्रिया विंडो को छुपा सकता हूं, और एक दूसरी विंडो प्रदर्शित कर सकता हूं जिसे मैं कब्जा कर लिया गया था, लेकिन यह आवश्यकतानुसार अधिक काम की तरह लगता है। क्या कंसोल विंडो में आउटपुट प्रदर्शित करने का कोई तरीका है और इसे पूरा होने पर प्रोसेसिंग के लिए अभी भी कैप्चर करें?
वाह - मैं पहले OutputDataReceived नहीं देखा था। साफ! –
ऐसा लगता है कि मेरे पास बाल प्रक्रिया के स्वामित्व वाली कंसोल विंडो में प्रदर्शित आउटपुट हो सकता है या नहीं, और एक ही समय में मूल प्रक्रिया पर रीडायरेक्ट किया जा सकता है। मेरा अगला प्रश्न होगा, क्या आउटपुट को रीडायरेक्ट करना संभव नहीं है, और प्रक्रिया समाप्त होने पर बस इसे कंसोल से कैप्चर करें? या, यदि नहीं, तो कंसोल विंडो मैन्युअल रूप से बनाने का सबसे अच्छा तरीका क्या है ताकि प्रक्रिया को निष्पादित करने के रूप में मैं इसे पुनर्निर्देशित आउटपुट लिख सकूं ('आउटपुटडेटा प्राप्त 'का उपयोग कर? – mjl5007
http://msdn.microsoft.com/en-us/library/system.diagnostics.process.outputdatareceived.aspx पर एक नज़र डालें। इसमें एक उदाहरण है (आप सभी भाषाओं को बंद करना चाहते हैं लेकिन सी #) –