zoukankan      html  css  js  c++  java
  • 结束explorer进程

                  /// <summary>
            /// 以杀死进程的方式杀死explorer
            /// </summary>
            /// <param name="name">要杀死的进程友好名(无 .exe)</param>
            static public void killProcess(string name)
            {
                try
                {
                    Process[] myProcesses = Process.GetProcesses();
                    foreach (Process myProcess in myProcesses)
                    {
                        if (name == myProcess.ProcessName)
                            myProcess.Kill();
                    }
                }
                catch (Exception ee)
                {
                    //抛出异常
                    MessageBox.Show(ee.Message);
                }
            }
    
            //static public void cmdkill(string name)
            //{
            //    string str = @"taskkill /f /im explorer.exe";
            //    Process p = new Process();                                    //建立外部调用线程
            //    p.StartInfo.FileName = "ffmpeg.exe";                          //要调用外部程序的绝对路径
            //    p.StartInfo.Arguments = str;                                  //参数(这里就是FFMPEG的参数了)
            //    p.StartInfo.UseShellExecute = false;                          //不使用操作系统外壳程序启动线程(一定为FALSE,详细的请看MSDN)
            //    p.StartInfo.RedirectStandardError = true;                     //把外部程序错误输出写到StandardError流中(这个一定要注意,FFMPEG的所有输出信息,都为错误输出流,用StandardOutput是捕获不到任何消息的...mencoder就是用standardOutput来捕获的)
            //    p.StartInfo.CreateNoWindow = true;                            //不创建进程窗口
            //    p.ErrorDataReceived += new DataReceivedEventHandler(Output);  //外部程序(这里是FFMPEG)输出流时候产生的事件,这里是把流的处理过程转移到下面的方法中,详细请查阅MSDN
            //    p.Start();                                                    //启动线程
            //    p.BeginErrorReadLine();                                       //开始异步读取
            //    p.WaitForExit();                                              //阻塞等待进程结束
            //    p.Close();                                                    //关闭进程
            //    p.Dispose();                                                  //释放资源
            //    //return true;
            //}
            #region 第一种运行CMD的方式
            /// <summary>
            /// 调用CMD命令来杀死或重启进程
            /// </summary>
            /// <param name="a">杀死或重启进程</param>
            /// <returns>cmd命令返回</returns>
            public static string cmdkill(bool a)
            {
                string str;
                //string str = Console.ReadLine();
                if (a)
                {
                    str = @"taskkill /f /im explorer.exe";
                }
                else
                {
                    //str = @"C:Windowsexplorer.exe";
                    str = @"explorer.exe";
                }
                Process p = new Process();
                p.StartInfo.FileName = "cmd";
                p.StartInfo.UseShellExecute = false;                 //是否使用操作系统shell启动
                p.StartInfo.RedirectStandardInput = true;            //接受来自调用程序的输入信息
                p.StartInfo.RedirectStandardOutput = true;           //由调用程序获取输出信息
                p.StartInfo.RedirectStandardError = true;            //重定向标准错误输出
                p.StartInfo.CreateNoWindow = true;                   //不显示程序窗口
                p.Start();                                           //启动程序
                //向cmd窗口发送输入信息
                p.StandardInput.WriteLine(str + "&exit");
                //p.StandardInput.WriteLine(str);
                p.StandardInput.AutoFlush = true;
                //p.StandardInput.WriteLine("exit");
                //向标准输入写入要执行的命令。这里使用&是批处理命令的符号,表示前面一个命令不管是否执行成功都执行后面(exit)命令,如果不执行exit命令,后面调用ReadToEnd()方法会假死
                //同类的符号还有&&和||前者表示必须前一个命令执行成功才会执行后面的命令,后者表示必须前一个命令执行失败才会执行后面的命令
    
                //获取cmd窗口的输出信息
                string output = p.StandardOutput.ReadToEnd();
                p.WaitForExit();//等待程序执行完退出进程
                p.Close();
                return output;
            }
            #endregion
    
            #region 第二种运行CMD的方式
            /// <summary>
            /// 运行cmd命令
            /// 会显示命令窗口
            /// </summary>
            /// <param name="cmdExe">指定应用程序的完整路径</param>
            /// <param name="cmdStr">执行命令行参数</param>
            static bool RunCmd(string cmdExe, string cmdStr)
            {
                bool result = false;
                try
                {
                    using (Process myPro = new Process())
                    {
                        //指定启动进程是调用的应用程序和命令行参数
                        ProcessStartInfo psi = new ProcessStartInfo(cmdExe, cmdStr);
                        myPro.StartInfo = psi;
                        myPro.Start();
                        myPro.WaitForExit();
                        result = true;
                    }
                }
                catch
                {
                }
                return result;
            }
            /// <summary>
            /// 运行cmd命令
            /// 不显示命令窗口
            /// </summary>
            /// <param name="cmdExe">指定应用程序的完整路径</param>
            /// <param name="cmdStr">执行命令行参数</param>
            static bool RunCmd2(string cmdExe, string cmdStr)
            {
                bool result = false;
                try
                {
                    using (Process myPro = new Process())
                    {
                        myPro.StartInfo.FileName = "cmd.exe";
                        myPro.StartInfo.UseShellExecute = false;
                        myPro.StartInfo.RedirectStandardInput = true;
                        myPro.StartInfo.RedirectStandardOutput = true;
                        myPro.StartInfo.RedirectStandardError = true;
                        myPro.StartInfo.CreateNoWindow = true;
                        myPro.Start();
                        //如果调用程序路径中有空格时,cmd命令执行失败,可以用双引号括起来 ,在这里两个引号表示一个引号(转义)
                        string str = string.Format(@"""{0}"" {1} {2}", cmdExe, cmdStr, "&exit");
                        myPro.StandardInput.WriteLine(str);
                        myPro.StandardInput.AutoFlush = true;
                        myPro.WaitForExit();
                        result = true;
                    }
                }
                catch
                {
                }
                return result;
            }
            #endregion
  • 相关阅读:
    Mysql数据库基本操作
    Entity Framework 实践系列 —— 搞好关系 单相思(单向一对一,onetoone)
    ADO.NET最佳实践
    C++试题1
    SQL操作(初级、中级、高级)
    存储过程入门与提高
    数据库学习笔记
    触发器设计技巧与实例
    UML在关系型数据库设计中的应用
    数据库设计的一些构想
  • 原文地址:https://www.cnblogs.com/zty1294625258/p/9598183.html
Copyright © 2011-2022 走看看