2010-03-02 20 views
32

मेरे पास एक सी # कंसोल एप्लिकेशन (ए) है। मैं ऐप ए (समकालिक तरीके से) के भीतर से अन्य कंसोल ऐप (बी) निष्पादित करना चाहता हूं कि बी उसी कमांड विंडो का उपयोग करता है। जब बी मौजूद है, ए बी के निकास कोड को पढ़ने में सक्षम होना चाहिए।अन्य कंसोल ऐप से कंसोल एप्लिकेशन चलाएं

यह कैसे करें? मुझे इस सीडीडी विंडो में इस अन्य ऐप को चलाने के तरीके पर केवल इस छोटी सी युक्ति की आवश्यकता है।

उत्तर

30

आप अन्य कंसोल एप्लिकेशन शुरू करने के लिए Process.Start का उपयोग कर सकते हैं।

आप उत्पादन खुद के उपयोग करने में सक्षम होने के लिए true को ProcessStartInfo.RedirectOutput सेट और क्रम में false को UseShellExecute सेट के साथ प्रक्रिया का निर्माण करने की आवश्यकता होगी।

आप प्रक्रिया पर StandardOutput.ReadToEnd का उपयोग कर आउटपुट पढ़ सकते हैं।

+0

विंडोज 10 पर जहां cmd ​​विंडोज सर्वर 2008 बिल्ड पर्यावरण है, यह अब काम नहीं करता है, नया एप्लिकेशन तुरंत एक नई विंडो खुलता है। – Georg

9

आप Process.Start() कॉल का उपयोग कर एक और प्रक्रिया शुरू कर सकते हैं। examples here दिखाता है कि अन्य प्रक्रिया से आउटपुट कैसे पढ़ा जाए और इसे समाप्त करने की प्रतीक्षा करें।

4

आप प्रक्रिया के साथ एक और प्रक्रिया शुरू कर सकते हैं। स्टार्ट - वास्तव में कोई फर्क नहीं पड़ता कि यह कंसोल ऐप है या नहीं। यदि आपका ऐप पहले से ही कंसोल विंडो में चल रहा है तो नया स्पॉन्ड ऐप उस कंसोल विंडो का भी उपयोग करेगा।

var proc = Process.Start("...path to second app"); 
proc.WaitForExit(); 
var exitCode = proc.ExitCode; 

तैयार प्रक्रिया वर्ग पर डॉक्स के लिए सुनिश्चित रूप में वहाँ थोड़ा बारीकियों कि आपके माध्यमिक एप्लिकेशन शुरू की है जिस तरह से प्रभावित कर सकता है की एक किस्म है रहो।

1

एक System.Diagnostics.ProcessStartInfo भरें और Process.Start

आप WaitForExit कर सकते हैं करने के लिए इसे जिसके परिणामस्वरूप प्रक्रिया पर गुजरती हैं, और उसके बाद की प्रक्रिया के ExitCode संपत्ति का उपयोग वापसी मान देखने के लिए का उपयोग करें।

0

आप अपने संदर्भ में यह भी शामिल है और बुला जो कुछ भी विधि कार्यक्रम वर्ग के रन विधि में कहा जाता है

1

मैं चलाने के लिए सक्षम था द्वारा इसे बंद शुरू करने से नए के साथ पुराने सांत्वना अनुप्रयोग "रैप" कर सकते हैं कार्यक्रम निम्नलिखित विन्यास को फोन करके एक ही कमांड विंडो के भाग के रूप 'बी':

ConsoleColor color = Console.ForegroundColor; 
ProcessStartInfo startinfo = new ProcessStartInfo(nameProgramB); 
startinfo.CreateNoWindow = false; 
startinfo.UseShellExecute = false; 
Process p = Process.Start(startinfo); 
p.WaitForExit(); 
Console.ForegroundColor = color; 

इस तरह से, दोनों कार्यक्रमों seamlesly चलाने की तरह वे एक ही कार्यक्रम थे। 'nameProgramB' प्रोग्राम 'बी' का नाम है। उम्मीद है की यह मदद करेगा।

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