在进程中执行cmd.exe指令关闭其它进程的方式[c#]

在正常的进程工作中可能遇到某些某些资源被占用的情况,需要关闭这些占用资源的进程,然后方便自己继续进行工作,以adb.exe进程被占用为例:

    设置默认adb端口位5037,如果不是该端口可以在函数的参数列表中增加一个变量来替代。

       private void button1_Click(object sender, EventArgs e)

        {

            try

            {

                //创建一个进程

                Process p = new Process();

                p.StartInfo.FileName = "cmd.exe";

                p.StartInfo.UseShellExecute = false;//是否使用操作系统shell启动

                p.StartInfo.RedirectStandardInput = true;//接受来自调用程序的输入信息

                p.StartInfo.RedirectStandardOutput = true;//由调用程序获取输出信息

                p.StartInfo.RedirectStandardError = true;//重定向标准错误输出

                p.StartInfo.CreateNoWindow = true;//不显示程序窗口

                p.Start();//启动程序

                string strCMD = "netstat -aon|findstr \"5037\"";

                //向cmd窗口发送输入信息

                p.StandardInput.WriteLine(strCMD + "&exit");

                p.StandardInput.AutoFlush = true;

                //获取cmd窗口的输出信息

                string output = p.StandardOutput.ReadToEnd();

                char[] szChar = new char[] { '\r', '\n' };

                string[] strArr = output.Split(szChar, StringSplitOptions.RemoveEmptyEntries);

                List<int> listInt = new List<int>();

                foreach (string strItem in strArr)

                {

                    if (strItem.Contains("ESTABLISHED"))

                    {

                        string strPid = strItem.Substring(strItem.IndexOf("ESTABLISHED") + 11);

                        listInt.Add(Int32.Parse(strPid.Trim()));

                    }

                }

                strCMD = "taskkill /f ";

                foreach (int nItem in listInt)

                {

                    strCMD += $" /pid {nItem}";  // 一次性杀死多个进程

                }

                //向cmd窗口发送输入信息

                p.Start();//启动程序

                p.StandardInput.WriteLine(strCMD + " &exit");

                p.StandardInput.AutoFlush = true;

                richTextBox1.Text = output;

                //等待程序执行完退出进程

                p.WaitForExit();

                p.Close();

           }

            catch (Exception ex)

            {

                MessageBox.Show(ex.Message + "\r\n跟踪;" + ex.StackTrace);

            }

        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值