C# cmd返回信息

冷猫 2009-04-13 07:34:22
我用这种方法来获得cmd返回信息,但无论我弄什么命令,他都只返回
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.
代码如下:
public void cmd()
{
Process process = new Process();
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.CreateNoWindow = false;
process.Start();
process.StandardInput.WriteLine("ping www.baidu.com");
process.StandardInput.WriteLine("exit");
String a="";
textBox3.Text = "";
int b = 1;
while (b == 1)
{
a =process.StandardOutput.ReadLine();
textBox3.Text = textBox3.Text + a + "\r\n";

if (a.Length == 0)
{
a = process.StandardOutput.ReadLine();
if (a.Length == 0)
{
b = 0;
}
}
}
process.Close();
}
如果用textBox3.Text=textBox3.Text+process.StandardOutput.ReadToEnd();程序就会死机,而且cmd窗口不退掉。
请问如何解决

...全文
287 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
liu87325 2009-10-13
  • 打赏
  • 举报
回复
有多线程的不?
zxjdai 2009-10-05
  • 打赏
  • 举报
回复
把判断语句改一下。
if (a.Length == 0)
{
a = process.StandardOutput.ReadLine();
if (a.Length == 0)
{
b = 0;
}
}

改为:
if (process.StandardOutput.EndOfStream)
{
b = 0;

}
冷猫 2009-04-14
  • 打赏
  • 举报
回复
谢谢
ls25145 2009-04-13
  • 打赏
  • 举报
回复
你既然要获取 cmd 的输出,那还要那个黑框干什么?
public void cmd()
{
Process process = new Process();
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.CreateNoWindow = true;
process.Start();
process.StandardInput.WriteLine("ping www.baidu.com");
process.StandardInput.WriteLine("exit");
textBox3.AppendText(process.StandardOutput.ReadToEnd());
process.Close();
}
冷猫 2009-04-13
  • 打赏
  • 举报
回复
十分感谢,不过我还更想知道解决方法是什么

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧