2010-12-13 9 views
13

कोई भी मुझे बता सकता है कि Winforms ऐप से एक और कंसोल एप्लिकेशन कैसे स्पैन करें, लेकिन (ए) स्क्रीन पर कंसोल विंडो नहीं दिखाएं, और (बी) अभी भी मानक आउटपुट प्राप्त करें आवेदन? वर्तमान में मैं निम्नलिखित की तरह कुछ है:सी #: बाहरी कंसोल प्रोग्राम को छिपाएं

Process SomeProgram = new Process(); 
    SomeProgram.StartInfo.FileName = @"c:\foo.exe"; 
    SomeProgram.StartInfo.Arguments = "bar"; 
    SomeProgram.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
    SomeProgram.StartInfo.UseShellExecute = false; 
    SomeProgram.StartInfo.RedirectStandardOutput = true; 
    SomeProgram.Start(); 
    SomeProgram.WaitForExit(); 
    string SomeProgramOutput = SomeProgram.StandardOutput.ReadToEnd(); 

अगर मैं RedirectStandardOutput गलत पर सेट है, तो कंसोल एप्लिकेशन की उम्मीद के रूप में छिपा है, लेकिन मैं मानक आउटपुट पाठ नहीं मिल सकता है। हालांकि, जैसे ही मैंने RedirectStandardOutput को सत्य पर सेट किया है, विंडो छिपी रहती है, हालांकि मैं प्रोग्राम का आउटपुट प्राप्त करने में सक्षम हूं।

तो, मुझे पता है कि कंसोल ऐप को कैसे छुपाया जाए, और मुझे पता है कि कार्यक्रम के आउटपुट को कैसे प्राप्त किया जाए, लेकिन मैं इसे दोनों करने के लिए कैसे प्राप्त करूं?

कई TIA

+0

वर्तमान समाधान के साथ समस्या क्या है? – codymanix

+0

उपरोक्त समाधान मुझे कंसोल ऐप के आउटपुट प्राप्त करने देता है, लेकिन खिड़की छिपी नहीं है। यदि मैं मानक आउटपुट प्राप्त करने के लिए कोड हटा देता हूं, तो विंडो * आईएस * छुपा हुआ है। मैं मानक आउटपुट प्राप्त करने के लिए खिड़की छुपा * और * चाहता हूं। – JamesPD

उत्तर

33

आप CreateNoWindow संपत्ति जो आपके मामले में सच करने के लिए सेट किया जाना है याद कर रहे हैं।

+0

आह, बहुत धन्यवाद स्टीफन, यही वही है जो मैं ढूंढ रहा था। – JamesPD

+4

@JamesPD अगर स्टीफन का उत्तर आपकी समस्या का समाधान करने वाला उत्तर था, तो आप उसे पुरस्कृत कर सकते हैं और उसे अपने उत्तर को स्वीकार कर इसे चिह्नित कर सकते हैं - उसके उत्तर के बाईं ओर खोखले टिक पर क्लिक करें। –

0

मुझे लगता है कि यह तुम्हारी मदद करेगा:

System.Diagnostics.Process pProcess = new System.Diagnostics.Process(); 
pProcess.StartInfo.FileName = @"C:\Users\Vitor\ConsoleApplication1.exe"; 
pProcess.StartInfo.Arguments = "olaa"; //argument 
pProcess.StartInfo.UseShellExecute = false; 
pProcess.StartInfo.RedirectStandardOutput = true; 
pProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 
pProcess.StartInfo.CreateNoWindow = true; //not diplay a windows 
pProcess.Start(); 
string output = pProcess.StandardOutput.ReadToEnd(); //The output result 
pProcess.WaitForExit(); 
संबंधित मुद्दे