2013-01-11 37 views
6

Tôi đã phát triển một tiện ích sẽ nhận được thời gian của tất cả các máy chủ trong danh sách.Muốn ẩn màn hình nhắc cmd

System.Diagnostics.Process p; 
string server_name = ""; 
string[] output; 
p = new System.Diagnostics.Process(); 
p.StartInfo.FileName = "net"; 
p.StartInfo.UseShellExecute = false; 
p.StartInfo.RedirectStandardOutput = true; 
p.StandardOutput.ReadLine().ToString() 

Khi thực thi mã này. Màn hình nhắc Cmd đang đến. Tôi muốn ẩn nó khỏi người dùng. Tôi có thể làm gì cho nó?

Trả lời

11

Bạn có thể nói quá trình sử dụng không có cửa sổ hoặc để giảm thiểu nó:

// don't execute on shell 
p.StartInfo.UseShellExecute = false; 
p.StartInfo.CreateNoWindow = true; 

// don't show window 
p.StartInfo.WindowStyle = ProcessWindowStyle.Minimized; 

với UseShellExecute = false bạn có thể chuyển hướng đầu ra:

// redirect standard output as well as errors 
p.StartInfo.RedirectStandardOutput = true; 
p.StartInfo.RedirectStandardError = true; 

Khi bạn làm điều này, bạn sẽ d sử dụng đọc không đồng bộ của bộ đệm đầu ra để tránh bế tắc do buffers thể bơm:

StringBuilder outputString = new StringBuilder(); 
StringBuilder errorString = new StringBuilder(); 

p.OutputDataReceived += (sender, e) => 
      { 
       if (e.Data != null) 
       { 
        outputString.AppendLine("Info " + e.Data); 
       } 
      }; 

p.ErrorDataReceived += (sender, e) => 
      { 
       if (e.Data != null) 
       { 
        errorString.AppendLine("EEEE " + e.Data); 
       } 
      }; 
+0

UseShellExecute = false cũng sẽ cho phép bạn chuyển hướng STDOUT và STDERR thành các luồng có thể hữu ích. –

+0

@SrikanthVenugopalan Tôi bỏ nó ra vì OP đã làm nó. – Matten

+1

có bạn đúng, xấu của tôi. Mặc dù, cá nhân tôi cảm thấy RedirectStandardError là quan trọng hơn. –

0

Hãy thử này cả

p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 

hoặc kiểm tra này cũng

Để chạy các tiến trình con mà không cần bất kỳ cửa sổ,

sử dụng tài sản CreateNoWindow và thiết lập UseShellExecute.

ProcessStartInfo info = new ProcessStartInfo(fileName, arg); 
info.CreateNoWindow = true; 
info.UseShellExecute = false; 
Process processChild = Process.Start(info); 

tôi đề nghị bạn phải đi qua các bài viết này của MSDN: How to start a console app in a new window, the parent's window, or no window

4

Hãy thử với ProcessWindowStyle liệt kê như thế này;

p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
p.StartInfo.UseShellExecute = false; 
p.StartInfo.CreateNoWindow = true; 

Kiểu cửa sổ ẩn. Một cửa sổ có thể hiển thị hoặc ẩn. Hệ thống hiển thị cửa sổ ẩn bằng cách không vẽ nó. Nếu cửa sổ là bị ẩn, cửa sổ sẽ bị vô hiệu hóa. Một cửa sổ ẩn có thể xử lý các thông báo từ hệ thống hoặc từ các cửa sổ khác, nhưng nó không thể xử lý đầu vào từ đầu ra của người dùng hoặc hiển thị. Thông thường, một ứng dụng có thể giữ một cửa sổ mới ẩn trong khi nó tùy chỉnh giao diện của cửa sổ, và sau đó làm cho kiểu cửa sổ Bình thường. Để sử dụng ProcessWindowStyle.Hidden, các ProcessStartInfo.UseShellExecute tài sản phải sai.

0

Thêm tham chiếu hệ thống.

using System.Diagnostics; 

Sau đó, sử dụng mã này để chạy lệnh của bạn trong cửa sổ CMD ẩn.

Process cmd = new Process(); 
cmd.StartInfo.FileName = "cmd.exe"; 
cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
cmd.StartInfo.Arguments = "Enter your command here"; 
cmd.Start(); 
Các vấn đề liên quan