2009-04-10 10 views
43

मुझे पता है कि प्रक्रिया को कैसे लॉन्च किया जाए। लेकिन मेरी समस्या अब कंसोल विंडो है (इस मामले में 7z) मेरी दृष्टि को अवरुद्ध कर रही है और मेरी फोकस को मेरी वाक्य में बाधित कर रही है या w/e मैं हर कुछ सेकंड कर रहा हूं। यह बेहद परेशान है, मैं इसे कैसे होने से रोक सकता हूं। मैंने सोचा कि CreateNoWindow हल करता है लेकिन यह नहीं था।कंसोल विंडो को विचलित किए बिना सी # में लॉन्च करने की प्रक्रिया

नोट: कभी-कभी कंसोल को उपयोगकर्ता इनपुट की आवश्यकता होती है (फ़ाइल को प्रतिस्थापित करें या नहीं)। तो इसे पूरी तरह छुपाएं एक समस्या हो सकती है।

यह मेरा वर्तमान कोड है।

void doSomething(...) 
{ 
    myProcess.StartInfo.FileName = ...; 
    myProcess.StartInfo.Arguments = ...; 
    myProcess.StartInfo.CreateNoWindow = true; 
    myProcess.Start(); 
    myProcess.WaitForExit(); 
} 
+3

मुझे लगता है कि मुझे याद है CreateNoWindow काम नहीं कर रहा, जब मैं अपने पिछले काम में इस्तेमाल किया। –

+0

@ एसिडज़ॉम्बी 24: कृपया मुन के जवाब को स्वीकार करें। यह अभी मेरे लिए काम किया है –

+0

यह पुराना सवाल भूल गया है। हो गया: डी @ डीरियो –

उत्तर

3

इस प्रयास करें:

myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Minimized; 
+4

मैं व्यक्तिगत रूप से इससे नफरत करता हूं। – rekire

+0

ने सब कुछ करने की कोशिश की है और यह एकमात्र चीज है जिसने –

2

मैं दोहरी जांच करने के लिए होगा, लेकिन मेरा मानना ​​है कि आप भी UseShellExecute = false सेट करना होगा। यह आपको मानक आउटपुट/त्रुटि धाराओं को कैप्चर करने देता है।

70

अगर मैं सही ढंग से याद है, यह मेरे लिए काम किया

Process process = new Process(); 

// Stop the process from opening a new window 
process.StartInfo.RedirectStandardOutput = true; 
process.StartInfo.UseShellExecute = false; 
process.StartInfo.CreateNoWindow = true; 

// Setup executable and parameters 
process.StartInfo.FileName = @"c:\test.exe" 
process.StartInfo.Arguments = "--test"; 

// Go 
process.Start(); 

मैं किसी अन्य प्रक्रिया शुरू करने के लिए एक सी # कंसोल आवेदन के भीतर से इस का उपयोग कर रहे हैं, और यह एक अलग विंडो में यह शुरू करने से आवेदन बंद हो जाता है, इसके बजाय एक ही खिड़की में सबकुछ रखते हुए।

+6

काम किया है अच्छा स्पष्टीकरण यहां पाया जा सकता है: http://blogs.msdn.com/b/jmstall/archive/2006/09/28/createnowindow.aspx –

+0

जब मैं सेट करता हूं 'रीडायरेक्ट मानक आउटपुट' को 'सत्य' में मुझे डिफ़ॉल्ट कंसोल में कोई आउटपुट नहीं मिला, इस लाइन पर टिप्पणी करते हुए मुझे डिफ़ॉल्ट कंसोल में आउटपुट दिया गया (मैं कंसोल ऐप बना रहा हूं)। – MDMoore313

15

@galets आपके सुझाव में, विंडो अभी भी बनाई गई है, केवल यह कम से कम शुरू होती है। यह वास्तव में क्या acidzombie24 चाहता था के लिए बेहतर काम करेगा:

myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
+0

उत्कृष्ट सुझाव !! आपका बहुत बहुत धन्यवाद। – DoubleDunk

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