当前位置:编程学习 > C#/ASP.NET >>

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#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,