2009-03-30 23 views

Trả lời

19

Vâng, bạn có thể bắt đầu một quy trình cmd.exe mới và sử dụng stdio và stdout để gửi và nhận dữ liệu.

ProcessStartInfo psi = new ProcessStartInfo("cmd.exe") 
{ 
    RedirectStandardError = true, 
    RedirectStandardInput = true, 
    RedirectStandardOutput = true, 
    UseShellExecute = false 
}; 

Process p = Process.Start(psi); 

StreamWriter sw = p.StandardInput; 
StreamReader sr = p.StandardOutput; 

sw.WriteLine("Hello world!"); 
sr.Close(); 

Thông tin thêm về MSDN.

+10

hmm. Tôi không thể làm điều này để làm việc trong Windows 7 + .NET 4. Tự hỏi điều gì đã thay đổi ... – LamonteCristo

+1

Tôi cũng không thể làm việc này. Quá trình được bắt đầu bởi vì tôi có thể nhìn thấy nó trong Task Manager, nhưng cửa sổ giao diện điều khiển không bao giờ xuất hiện, bất kể những gì tôi đặt các thuộc tính 'CreateNoWindow' và' WindowStyle' của đối tượng ProcessStartInfo. Có lẽ nó liên quan đến quyền trên Windows 7? –

+0

Không hoạt động với tôi trên Win 8.1. – Krummelz

-3

Một bảng điều khiển duy nhất được gắn với bất kỳ quy trình cụ thể nào. Vì vậy, trong ngắn hạn bạn có thể không. Nhưng có nhiều cách để "giả mạo"

3

Sau đây sẽ tắt số cửa sổ bảng điều khiển phụ thuộc vào ứng dụng và lưu trữ số lượng và thông số cho bảng điều khiển bên trong từ điển chuỗi sau đó được lặp lại để tạo số lượng yêu cầu ứng dụng bảng điều khiển sinh ra. Bạn sẽ chỉ cần các công cụ xử lý nếu chỉ sinh sản một khóa học.

//Start looping dic recs and firing console 
foreach (DictionaryEntry tests in steps) 
{ 
    try 
    { 
     Process runCmd = new Process(); 
     runCmd.StartInfo.FileName = CONSOLE_NAME; 
     runCmd.StartInfo.UseShellExecute = true; 
     runCmd.StartInfo.RedirectStandardOutput = false; 
     runCmd.StartInfo.Arguments = tests.Value.ToString(); 

     if (cbShowConsole.Checked) 
     { 
      runCmd.StartInfo.CreateNoWindow = true; 
      runCmd.StartInfo.WindowStyle = ProcessWindowStyle.Normal; 
     } 
     else 
     { 
      runCmd.StartInfo.CreateNoWindow = false; 
      runCmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
     } 
     runCmd.Start();     
    } 
    catch (Exception ex) 
    { 
     string t1 = ex.Message; 
    } 
} 

Lưu ý điều này nhằm mục đích chạy ẩn (CreateNoWindow) hoặc hiển thị.

Các vấn đề liên quan