2010-12-13 42 views
13

bất cứ ai có thể cho tôi biết cách tạo ứng dụng bảng điều khiển khác từ ứng dụng Winforms, nhưng (A) không hiển thị cửa sổ bảng điều khiển trên màn hình, và (B) ứng dụng? Hiện tại tôi có một số thông tin như sau:C#: Chạy chương trình điều khiển bên ngoài như ẩn

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(); 

Nếu tôi đặt RedirectStandardOutput thành false, thì ứng dụng bảng điều khiển sẽ bị ẩn như mong đợi nhưng tôi không thể lấy văn bản đầu ra chuẩn. Tuy nhiên, ngay sau khi tôi đặt RedirectStandardOutput thành true, cửa sổ sẽ bị ẩn, mặc dù tôi có thể nhận được kết quả của chương trình.

Vì vậy, tôi biết cách làm cho ứng dụng giao diện điều khiển chạy ẩn và tôi biết cách để có được kết quả của chương trình, nhưng làm cách nào để làm cho nó hoạt động cả hai?

Nhiều TIA

+0

các vấn đề với các giải pháp hiện nay là gì? – codymanix

+0

Giải pháp trên không cho phép tôi có được đầu ra của ứng dụng giao diện điều khiển, nhưng cửa sổ không bị ẩn. Nếu tôi xóa mã để có được đầu ra tiêu chuẩn, cửa sổ * IS * bị ẩn. Tôi muốn cửa sổ ẩn * AND * để có được đầu ra tiêu chuẩn. – JamesPD

Trả lời

33

Bạn đang thiếu CreateNoWindow tài sản đó phải được thiết lập để đúng trong trường hợp của bạn.

+0

Ah, cảm ơn rất nhiều Stefan, đó chính xác là những gì tôi đang tìm kiếm. – JamesPD

+4

@JamesPD nếu câu trả lời của Stefan là câu trả lời giải quyết vấn đề của bạn, bạn có thể thưởng cho anh ấy và đánh dấu nó như vậy bằng cách chấp nhận câu trả lời của anh ấy - nhấp vào dấu trống ở bên trái câu trả lời của anh ấy. –

0

Tôi nghĩ rằng nó sẽ giúp bạn:

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(); 
Các vấn đề liên quan