बैच फ़ाइल चलाते समय cmd विंडो को कैसे छिपाना है?बैच फ़ाइल चलाते समय cmd विंडो को कैसे छिपाना है?
मैं बैच फ़ाइल को चलाने के लिए निम्नलिखित कोड का उपयोग
process = new Process();
process.StartInfo.FileName = batchFilePath;
process.Start();
बैच फ़ाइल चलाते समय cmd विंडो को कैसे छिपाना है?बैच फ़ाइल चलाते समय cmd विंडो को कैसे छिपाना है?
मैं बैच फ़ाइल को चलाने के लिए निम्नलिखित कोड का उपयोग
process = new Process();
process.StartInfo.FileName = batchFilePath;
process.Start();
तो proc.StartInfo.UseShellExecute झूठी है, तो आप इस प्रक्रिया को लॉन्च कर रहे हैं और उपयोग कर सकते हैं:
proc.StartInfo.CreateNoWindow = true;
तो proc.StartInfo.UseShellExecute सच है, तो ओएस है प्रक्रिया को लॉन्च करना और आपको प्रक्रिया के लिए "संकेत" प्रदान करना होगा:
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
हालांकि कॉल एड एप्लिकेशन इस बाद के अनुरोध को अनदेखा कर सकता है।
हैं का उपयोग कर UseShellExecute = झूठी, आप किसी भी प्रवेश का उत्पादन किया कब्जा करने के लिए मानक आउटपुट/त्रुटि पुनः निर्देशित विचार करने के लिए, चाहते हो सकता है:
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardOutput = true;
proc.OutputDataReceived += new DataReceivedEventHandler(ProcessOutputHandler);
proc.StartInfo.RedirectStandardError = true;
proc.ErrorDataReceived += new DataReceivedEventHandler(ProcessOutputHandler);
और तरह
private void ProcessOutputHandler(object sendingProcess, DataReceivedEventArgs outLine)
{
if (!String.IsNullOrEmpty(outLine.Data)) // use the output outLine.Data somehow;
}
एक समारोह है एक भी नहीं है CreateNoWindow
पर an MSDN blog पर अच्छा पृष्ठ शामिल है।
विंडोज में एक बग भी है जो एक संवाद फेंक सकता है और CreateNoWindow
को हराने के लिए यदि आप उपयोगकर्ता नाम/पासवर्ड पास कर रहे हैं। विवरण
http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=98476 http://support.microsoft.com/?kbid=818858
उपयोग: process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
कभी कभी काम करता है, दूसरों को नहीं करता है 'टी। क्या यह बैट फ़ाइल कमांड पर निर्भर करता है? – Ahmed
Process properties के अनुसार, यदि आप एक की क्या ज़रूरत है:
संपत्ति:
CreateNoWindow
नोट: आप एक कमांड लाइन कार्यक्रम चुपचाप चलाने के लिए अनुमति देता है। यह कंसोल विंडो फ़्लैश नहीं करता है।
और:
संपत्ति:
WindowStyle
ध्यान दें: इस का उपयोग करें के रूप में छिपा खिड़कियों स्थापित करने के लिए। लेखक नेProcessWindowStyle.Hidden
अक्सर उपयोग किया है।
उदाहरण के तौर पर!
static void LaunchCommandLineApp()
{
// For the example
const string ex1 = "C:\\";
const string ex2 = "C:\\Dir";
// Use ProcessStartInfo class
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = false;
startInfo.UseShellExecute = false;
startInfo.FileName = "dcm2jpg.exe";
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = "-f j -o \"" + ex1 + "\" -z 1.0 -s y " + ex2;
try
{
// Start the process with the info we specified.
// Call WaitForExit and then the using statement will close.
using (Process exeProcess = Process.Start(startInfo))
{
exeProcess.WaitForExit();
}
}
catch
{
// Log error.
}
}
कभी-कभी काम करता है, अन्य नहीं। क्या यह बैट फ़ाइल कमांड पर निर्भर करता है? – Ahmed
यह वही मेरे लिए काम किया है के लिए, जब आप इनपुट और आउटपुट के सभी अनुप्रेषित, और खिड़की छिपा सेट यह काम करना चाहिए
Process p = new Process();
p.StartInfo.RedirectStandardError = true;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
कभी-कभी काम करता है, अन्य नहीं। क्या यह बैट फ़ाइल कमांड पर निर्भर करता है? – Ahmed
अहमद, मैंने जवाब को और अधिक व्यापक बना दिया है और खिड़की को छिपाने के लिए आपके पास दो अलग-अलग विकल्प हैं। इसके अलावा, आवेदन के आधार पर, मुझे लगता है कि आप अभी भी इसे तोड़ सकते हैं और अपने बेहतर प्रयासों के बावजूद कुछ खिड़कियां बना सकते हैं। –