2010-03-02 23 views
32

C# konsolu uygulamasına sahibim (A). B uygulamasının aynı komut penceresini kullandığı şekilde, A uygulamasından (senkronize bir şekilde) diğer konsol uygulamasını (B) yürütmek istiyorum. B olduğunda, A, B çıkış kodunu okuyabilmelidir.Konsol uygulamasının diğer konsol uygulamasından çalıştırılması

Bu nasıl yapılır? Bu diğer uygulamayı aynı cmd penceresinde nasıl çalıştıracağımıza dair sadece küçük bir ipucuna ihtiyacım var.

cevap

30

Diğer konsol uygulamasını başlatmak için Process.Start kullanabilirsiniz.

çıktı üretmesi kendinizi yararlanmak için muktedir Sen true için ProcessStartInfo.RedirectOutput sette ve sırayla false için UseShellExecute seti ile süreci inşa etmek gerekecektir

.

Daha sonra işlemi StandardOutput.ReadToEnd kullanarak okuyabilirsiniz.

+0

Windows 10, cmd'nin Windows Server 2008 Yapılandırma Ortamı olduğu yerlerde, bu artık çalışmaz, yeni uygulama hemen yeni bir pencere açar. – Georg

9

Process.Start() numaralı çağrıyı kullanarak başka bir işlem başlatabilirsiniz. examples here, diğer işlemlerden çıktının nasıl okunacağını ve bitmesini beklemeyi gösterir.

4

Process.Start ile başka bir işlem başlatabilirsiniz - bir konsol uygulaması olup olmadığı gerçekten önemli değil. Uygulamanız bir konsol penceresinde zaten çalışıyorsa, yeni oluşturulan uygulama bu konsol penceresini de kullanacaktır. İkincil uygulama başlattı biçimini etkileyebilir küçük nüanslar çeşitli olduğu gibi

var proc = Process.Start("...path to second app"); 
proc.WaitForExit(); 
var exitCode = proc.ExitCode; 

Süreç sınıfına dokümanlar hazır emin olun.

0

size referanslar içinde dahil ve

1

Ben çalıştırmak başardı programı sınıfının çalışma yönteminde denir herhangi bir yöntemi çağırarak onu başlatarak yenisiyle eski konsol uygulaması "sarmalayabilirsiniz" aşağıdaki yapılandırmayı arayarak aynı komut penceresinde bir parçası olarak programı 'B': bunlar tek bir program vardı gibi

ConsoleColor color = Console.ForegroundColor; 
ProcessStartInfo startinfo = new ProcessStartInfo(nameProgramB); 
startinfo.CreateNoWindow = false; 
startinfo.UseShellExecute = false; 
Process p = Process.Start(startinfo); 
p.WaitForExit(); 
Console.ForegroundColor = color; 

bu sayede her iki program seamlesly çalıştırın. 'nameProgramB', 'B' adlı programın adıdır. Bu yardımcı olur umarım.

İlgili konular