c# 篩選進程命令行,得其ProcessId(唯一標示符,簡稱pid),再通過pid結束進程


如圖,任務管理器中的命令行

不說別的,上代碼

部分using:

using System.Diagnostics;
using System.Management;

其中要引用System.Management

1.通過篩選CommandLine查出pid

其中涉及Environment類的一些知識,大家可以自行查看:鏈接https://msdn.microsoft.com/zh-cn/library/system.environment(v=vs.110).aspx

/// <summary>
        /// 通過篩選CommandLine查出pid
        /// </summary>
        /// <param name="thanName1">條件one</param>
        /// <returns></returns>
        private static List<processId1> GetProcessId(string thanName1)
        {
            List<processId1> results = new List<processId1>();

            SelectQuery query1 = new SelectQuery("Select * from Win32_Process WHERE CommandLine like '%" + thanName1 + "%'");
            ManagementObjectSearcher searcher1 = new ManagementObjectSearcher(query1);
            try
            {
                foreach (ManagementObject disk in searcher1.Get())
                {
                    results.Add(new processId1()
                    {
                        processId01 = disk["ProcessId"].ToString(),
                        CommandLine = disk["CommandLine"].ToString(),
                        name = disk["Name"].ToString()
                    });
                }
            }
            catch
            {
                return null;
            }
            return results;
        }

  2.通過pid殺進程

/// <summary>
        /// 通過pid殺進程
        /// </summary>
        /// <param name="strProcid"></param>
        public void KillProcessid(string strProcid)
        {
            try
            {
                foreach (Process p in Process.GetProcesses())
                {
                    if (p.Id.Equals(Int32.Parse(strProcid)))  
                    {
                        if (!p.CloseMainWindow())
                        {
                            p.Kill();
                        }
                        else
                        {
                            p.Kill();
                        }
                    }
                }
            }
            catch
            {
                MessageBox.Show("Error");
            }
        }

  3.button里的

private void btn_skilladvertising_Click(object sender, EventArgs e)
        {
        string criteriaOne = "QQ";

            string str = null;
            try
            {
                foreach (processId1 item in GetProcessId(criteriaOne))
                {
                    KillProcessid(item.processId01);
                    str += "已結束   " + item.processId01 + "\n";
                }
            }
            catch
            {

                str = "Error";
            }
            MessageBox.Show(str);
        }

 

  4.我構造的類,其中有些沒用到,大家自己修改

public class processId1
        {
            public string CommandLine
            {
                get;
                set;
            }
            public string processId01
            {
                get;
                set;
            }
            public string name
            { get; set; }
        }

  5.其他一些結束進程的方法可以參照http://blog.csdn.net/xrongzhen/article/details/5838690

  6.其他的一些知識:

(1).this.MaximizeBox = false;//禁止窗口手動最大化,包括雙擊標題欄

(2).this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;//最開始窗口出現在屏幕中心

2016-11-11  14:28:57


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM