我有2個應用程序。 其中之一是控制檯應用程序,另一個是正常形式的應用程序 - 都用C#編寫。我想打開(從視圖中隱藏)控制檯應用程序窗體窗體應用程序,並能夠發送命令行到控制檯應用程序。從Windows窗體應用程序C控制檯應用程序#
我該怎麼做?
我有2個應用程序。 其中之一是控制檯應用程序,另一個是正常形式的應用程序 - 都用C#編寫。我想打開(從視圖中隱藏)控制檯應用程序窗體窗體應用程序,並能夠發送命令行到控制檯應用程序。從Windows窗體應用程序C控制檯應用程序#
我該怎麼做?
可以啓動後臺進程
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);
要啓動控制檯應用程序,請使用System.Diagnostics.Process class。
要將命令發送到控制檯應用程序,您需要一些稱爲「進程間通信」的內容。一種方法是使用WCF。一個簡單的教程可以找到here。