首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在c#中用windows应用程序启动控制台应用程序并逐行实时读取(监控)命令

在C#中,可以使用Process类来启动控制台应用程序并实时读取命令行输出。下面是一个示例代码:

代码语言:txt
复制
using System;
using System.Diagnostics;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建一个新的进程对象
            Process process = new Process();

            // 设置要启动的应用程序和参数
            process.StartInfo.FileName = "cmd.exe";
            process.StartInfo.Arguments = "/c your_console_app.exe";

            // 设置为使用操作系统外壳程序启动进程
            process.StartInfo.UseShellExecute = false;

            // 重定向标准输入、输出和错误输出
            process.StartInfo.RedirectStandardOutput = true;
            process.StartInfo.RedirectStandardError = true;
            process.StartInfo.RedirectStandardInput = true;

            // 设置进程输出数据接收事件处理程序
            process.OutputDataReceived += new DataReceivedEventHandler(OutputDataReceived);
            process.ErrorDataReceived += new DataReceivedEventHandler(ErrorDataReceived);

            // 启动进程
            process.Start();

            // 开始异步读取输出和错误输出流
            process.BeginOutputReadLine();
            process.BeginErrorReadLine();

            // 向标准输入流写入命令
            process.StandardInput.WriteLine("your_command");

            // 等待进程退出
            process.WaitForExit();
        }

        // 输出数据接收事件处理程序
        static void OutputDataReceived(object sender, DataReceivedEventArgs e)
        {
            if (!string.IsNullOrEmpty(e.Data))
            {
                Console.WriteLine("Output: " + e.Data);
            }
        }

        // 错误输出数据接收事件处理程序
        static void ErrorDataReceived(object sender, DataReceivedEventArgs e)
        {
            if (!string.IsNullOrEmpty(e.Data))
            {
                Console.WriteLine("Error: " + e.Data);
            }
        }
    }
}

上述代码中,通过创建一个Process对象,设置要启动的应用程序和参数,并将标准输入、输出和错误输出重定向到程序中。然后,通过订阅OutputDataReceivedErrorDataReceived事件来实时读取命令行输出和错误输出。最后,通过StandardInput向标准输入流写入命令。

请注意,上述代码中的your_console_app.exeyour_command需要替换为实际的控制台应用程序和命令。

这是一个基本的示例,你可以根据实际需求进行修改和扩展。在实际应用中,你可能需要处理更复杂的命令行交互、错误处理等情况。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券