C#中通过Process运行程序如何获取进程的标准输出
2024-08-19
23
在用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);
}
更新于:29天前赞一波!2
相关文章
- uniapp 微信小程序 控制台警告和错误处理
- 微信小程序内容安全检测(敏感词、敏感图)
- 微信小程序订阅消息
- 小程序客服会话
- 获取用户授权的手机号【微信小程序】
- EasyWechat 4.x 微信小程序订阅消息
- 小程序测试号、公众号测试号
- EasyWechat 4.x 微信小程序企业付款到零钱
- EasyWechat 3.x 小程序客服消息自动回复
- EasyWeChat 生成小程序码报错 cURL错误 60
- 微信小程序 wx.requestPayment({}) 唤起微信支付
- 人人商城 V3.18.1 小程序端获取商品列表接口
- 在64位的Windows系统下运行32位的C#程序如何控制重定向
- 火爆全网的ChatGPT智能AI机器人微信小程序源码 (附带部署教程)
- C#程序中如何获取当前操作系统的名称
- C#如何退出当前进程
- 用于查找子列表总和的 Python 程序
- 以蛇形模式打印矩阵的Python程序
- 我的Python程序太慢了。如何加快速度?
- 如何使用C#实现进程注入
文章评论
全部评论