2008-11-25 2 views
6

में जोड़े गए एक्सई को कैसे कॉल करें, इसलिए मैंने अपने प्रोजेक्ट के समाधान में एक EXE जोड़ा। EXE कुछ सामान करता है और stdout के माध्यम से डेटा आउटपुट करता है। मैं आउटपुट कैप्चर करना चाहता हूं, लेकिन अधिक महत्वपूर्ण बात यह है कि मैं अपने प्रोग्राम के भीतर EXE कैसे निष्पादित करूं?सी # - प्रोजेक्ट समाधान

उत्तर

7
Process p = new Process(); 
p.StartInfo.UseShellExecute = false; 
p.StartInfo.RedirectStandardOutput = true; 
p.StartInfo.FileName = "myExec.exe"; 
p.Start(); 
+0

यह उत्तर काम किया। धन्यवाद! – user40856

+2

हालांकि सापेक्ष फ़ाइल पथ केवल तभी काम करेगा जब वर्तमान कार्य निर्देशिका परिवर्तित नहीं हुई है ... –

+0

उसमें पैरामीटर कैसे पास करें और इसे अतुल्यकालिक रूप से कैसे कॉल करें? –

3

Process.Start। Stdout को कैप्चर करने के लिए आपको इसे ProcessStartInfo के माध्यम से रीडायरेक्ट करने की आवश्यकता है - MSDN पर एक उदाहरण है। सुनिश्चित करें कि exe को आउटपुट निर्देशिका (बिन/रिलीज इत्यादि) में कॉपी करने के लिए चिह्नित किया गया है।

यदि आपको दोनों स्टडआउट और स्टडर से पढ़ने की आवश्यकता है तो यह मुश्किल हो जाता है (एक भयानक कार्यान्वयन के साथ बफरिंग आदि के कारण डेडलॉक का खतरा होता है) ... here's कार्यकर्ता धागे का उपयोग करके एक उदाहरण।