C#中通过Process运行程序如何获取进程的标准输出
2024-08-19
54
在用C#写一个项目中的工具程序时,需要在C#程序中运行一个命令行的程序,同时将程序的命令行标准输出获取到并显示在指定的文本框中。
查找相关资料找到以下办法,供大家参考。
在创建Process的时候,通过如下方式来实现该功能。
首先,创建ProcessStartInfo:
var p = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = program.exe,
Arguments = command line arguments to your executable,
UseShellExecute = false,
RedirectStandardOutput = true,
CreateNoWindow = true
}
};
然后,用上面创建好的启动信息来启动进程,如下:
p.Start();
while (!p.StandardOutput.EndOfStream)
{
string line = p.StandardOutput.ReadLine();
// do something with line
}
另外,也可以参照以下代码,采用同步或异步方式来运行程序,获取命令行标准输出的内容。
同步方式的代码:
static void runCommand()
{
Process process = new Process();
process.StartInfo.FileName = cmd.exe;
process.StartInfo.Arguments = /c DIR; // Note the /c command (*)
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.Start();
//* Read the output (or the error)
string output = process.StandardOutput.ReadToEnd();
Console.WriteLine(output);
string err = process.StandardError.ReadToEnd();
Console.WriteLine(err);
process.WaitForExit();
}
异步方式的代码:
static void runCommand()
{
//* Create your Process
Process process = new Process();
process.StartInfo.FileName = cmd.exe;
process.StartInfo.Arguments = /c DIR;
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
//* Set your output and error (asynchronous) handlers
process.OutputDataReceived += new DataReceivedEventHandler(OutputHandler);
process.ErrorDataReceived += new DataReceivedEventHandler(OutputHandler);
//* Start process and handlers
process.Start();
process.BeginOutputReadLine();
process.BeginErrorReadLine();
process.WaitForExit();
}
static void OutputHandler(object sendingProcess, DataReceivedEventArgs outLine)
{
//* Do your stuff with the output (write to console/log/StringBuilder)
Console.WriteLine(outLine.Data);
}
更新于:3个月前赞一波!2
相关文章
- 【说站】python中进程池Pool的初始化
- 【说站】java程序编好了怎么运行
- 【说站】java程序怎么运行
- 【说站】python程序的执行原理
- 10个技巧优化PHP程序Laravel 5框架
- jwt 小程序接口鉴权 【firebase 6.x】
- 微信小程序用户隐私保护协议填写范本
- 小程序中商家入驻提醒、新订单提醒
- 微信小程序中的支付宝支付
- uniapp 微信小程序 控制台警告和错误处理
- 微信小程序内容安全检测(敏感词、敏感图)
- 微信小程序订阅消息
- 小程序客服会话
- 获取用户授权的手机号【微信小程序】
- EasyWechat 4.x 微信小程序订阅消息
- 小程序测试号、公众号测试号
- EasyWechat 4.x 微信小程序企业付款到零钱
- EasyWechat 3.x 小程序客服消息自动回复
- EasyWeChat 生成小程序码报错 cURL错误 60
- 微信小程序 wx.requestPayment({}) 唤起微信支付
文章评论
评论问答