从Windows窗体应用程序的exe生成的控制台读/写数据

时间:2015-02-27 03:57:59

标签: c# forms console

我有一个简单的c #windowsform应用程序,它调用一个exe。exe inturn打开一个控制台。是否可以读取和写入由exe生成的CONSOLE数据。我想从我的Windows窗体应用程序发送数据

2 个答案:

答案 0 :(得分:1)

如果您的可执行文件是使用运行'cmd.exe'的Process实例创建控制台,那么您可以通过设置进程的StartupInfo来重定向控制台的输入和输出...

p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardInput = true;

...然后您可以挂钩当用户输入控制台输入时发生的事件......

p.OutputDataReceived += new .DataReceivedEventHandler(ConsoleOutputHandler);

void ConsoleOutputHandler(object sender, DataReceivedEventArgs rec)
{
    // do something with the data
}

答案 1 :(得分:1)

您可以使用Process.startInfo()传递参数。获取参数应根据您的要求进行(可能是从文本框中读取等)。

        // Extracting parameter from form
        string para1=textbox1.Text;

        // State the program to be start; PATH is the path to program .exe
        ProcessStartInfo startInfo = new ProcessStartInfo(PATH);

        // Passing arguments :para1 extracted from textbox (string type) 
        startInfo.Arguments = para1 

        // Starting process
        Process exec= Process.Start(startInfo);

        // optionally waiting for execution
        exec.WaitForExit();

这也可以按照以下方式单行完成,

// Simply define program to execute and pass a and b parameters
Process.Start(PATH,para1);

注意:path是类似"program1.exe"的字符串或程序的完整路径

此外:您不限于一个参数

        // Extracting parameter from form
        string para1=textbox1.Text;
        string para2=textbox2.Text;

        Process.Start(PATH,para1+" "+para2); // Pass 2 parameters (using + string concat)

您可以发送许多参数,只需用空格分隔它们。当您需要在参数中包含空格时,只需使用'\'

进行转义即可。