C#中Process调用DOS命令的问题。
我想实现DOS的shutdown命令.可是程序老是在调用出DOS窗口后停止或者一直刷新出命令,请各位大侠帮忙看下。能给出各种方法的大侠,我代表正在学习Procss的小朋友们致谢!!请完善一下方法:
1. 使用 Process.start(); 写入命令
2. 使用 Process.Startinfo 属性。
3. 或者Process.start("cmd"); 调用文件执行 cmd.bat 的文件内容:shutdown -s -t 500
我的程序如下:
点击按钮去激活下面的响应。
private void buttonExecute_Click(object sender, EventArgs e)
{
this.delyTime = Convert.ToInt32(textBoxHours.Text)*3600
+Convert.ToInt32(textBoxMinutes.Text)*60
+ Convert.ToInt32(textBoxSeconds.Text);
string cmd="shutdown -s -t "+delyTime;
//string path = "shutdown.bat";
//////////////////////////////////////////////////////////////////
Process p = new Process();
p.StartInfo.FileName = "cmd.exe "; //设定程序名
p.StartInfo.Arguments = "/c" + cmd;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true; //重定向错误输出
p.StartInfo.CreateNoWindow = false; //设置不显示窗口
p.Start();
//p.StandardInput.WriteLine(cmd);//执行的命令
p.StandardInput.WriteLine("exit");//执行的命令
p.Close();
}
////////////////////////////////////////////////////////////////////////////////////////
Byte[] info = new UTF8Encoding(true).GetBytes(cmd);
FileStream fin = File.Open(path, FileMode.Create,FileAccess.ReadWrite ,FileShare.None);
fin.Write(info, 0, info.Length);
fin.Close();
//先写一个批文件,然后调用。
Process myProcess = new Process();
Process.Start("shutdown.bat");
myProcess.WaitForExit();
string str = p.StandardOutput.ReadToEnd(); //此处异常
Console.WriteLine(str);
--------------------编程问答--------------------
--------------------编程问答-------------------- 请大家负起责任点测试过在发帖。楼上的那样不行啊!
Process myProcess = new Process();//定义一个线程实例;
myProcess.StartInfo.FileName = "cmd.exe";//启动名为"cmd.exe"的线程,就相当于你点击电脑左下角的"开机"-"运行"-输入cmd后回车,也就是启动了命令提示符界面;
myProcess.StartInfo.UseShellExecute = false;//关闭Shell的使用
myProcess.StartInfo.RedirectStandardInput = true;//重定向标准输入
myProcess.StartInfo.RedirectStandardOutput = true;//重定向标准输出
myProcess.StartInfo.RedirectStandardError = true;//重定向错误输出
myProcess.StartInfo.CreateNoWindow = true;//设置不显示窗口
myProcess.Start();//此处才是启动了该线程
myProcess.StandardInput.WriteLine("shutdown -s -t 0");//相当于你在命令提示符界面输入"shutdown -s -t 0",只不过不显示窗口界面。"shutdown -s -t 0"是电脑关机指令,你可以百度下
补充:.NET技术 , C#