2011-07-20 319 views
3

我有2個應用程序。 其中之一是控制檯應用程序,另一個是正常形式的應用程序 - 都用C#編寫。我想打開(從視圖中隱藏)控制檯應用程序窗體窗體應用程序,並能夠發送命令行到控制檯應用程序。從Windows窗體應用程序C控制檯應用程序#

我該怎麼做?

回答

5

可以啓動後臺進程

ProcessStartInfo startInfo = new ProcessStartInfo(); 
startInfo.FileName = "Myapplication.exe"; 
startInfo.WindowStyle = ProcessWindowStyle.Hidden; 
Process process = new Process(); 
process.StartInfo = startInfo; 
process.Start(); 

,之後使用Process.StandardOutput property

// This is the code for the base process 
Process myProcess = new Process(); 
// Start a new instance of this program but specify the 'spawned' version. 
ProcessStartInfo myProcessStartInfo = new ProcessStartInfo(args[0], "spawn"); 
myProcessStartInfo.UseShellExecute = false; 
myProcessStartInfo.RedirectStandardOutput = true; 
myProcess.StartInfo = myProcessStartInfo; 
myProcess.Start(); 
StreamReader myStreamReader = myProcess.StandardOutput; 
// Read the standard output of the spawned process. 
string myString = myStreamReader.ReadLine(); 
Console.WriteLine(myString); 

myProcess.WaitForExit(); 
myProcess.Close(); 

如果你想將命令發送到這個過程中,只要使用Process.StandardInput Property

// Start the Sort.exe process with redirected input. 
// Use the sort command to sort the input text. 
Process myProcess = new Process(); 

myProcess.StartInfo.FileName = "Sort.exe"; 
myProcess.StartInfo.UseShellExecute = false; 
myProcess.StartInfo.RedirectStandardInput = true; 

myProcess.Start(); 

StreamWriter myStreamWriter = myProcess.StandardInput; 

// Prompt the user for input text lines to sort. 
// Write each line to the StandardInput stream of 
// the sort command. 
String inputText; 
int numLines = 0; 
do 
{ 
    Console.WriteLine("Enter a line of text (or press the Enter key to stop):"); 

    inputText = Console.ReadLine(); 
    if (inputText.Length > 0) 
    { 
     numLines ++; 
     myStreamWriter.WriteLine(inputText); 
    } 
} while (inputText.Length != 0); 
1

可能的解決方案之一可以是IPC,尤其是

NamedPipes

這已經包裝在.NET 4.0中。

問候。

1

要啓動控制檯應用程序,請使用System.Diagnostics.Process class

要將命令發送到控制檯應用程序,您需要一些稱爲「進程間通信」的內容。一種方法是使用WCF。一個簡單的教程可以找到here

相關問題