C#獲取本地應用進程和端口號的實現(xiàn)示例
后臺調(diào)用命令行程序,通過分析netstat命令的返回結果獲取進程信息,主要使用的參數(shù)包括-a(顯示所有連接和偵聽端口)、-n(以數(shù)字形式顯示地址和端口號)、-o(顯示擁有的與每個連接關聯(lián)的進程 ID),其實-b(顯示在創(chuàng)建每個連接或偵聽端口時涉及的可執(zhí)行程序)也可以用,但是它的返回結果沒有和前幾個參數(shù)在一行,分析起來比較麻煩,就沒有用。另外,如果是查詢端口,還可以在命令行中附帶findstr命令從netstat命令的返回結果中篩選。最終的示例代碼如下:
List<SearchedProcessInfo> searchResult=new List<SearchedProcessInfo>();
    Process pro = null;
    try
    {
        pro = new Process();
        pro.StartInfo.FileName = "cmd.exe";
        pro.StartInfo.UseShellExecute = false;
        pro.StartInfo.RedirectStandardInput = true;
        pro.StartInfo.RedirectStandardOutput = true;
        pro.StartInfo.RedirectStandardError = true;
        pro.StartInfo.CreateNoWindow = true;
        pro.Start();
        pro.StandardInput.WriteLine(String.IsNullOrWhiteSpace(txtPPort.Text)?"netstat -ano":String.Format("netstat -ano | findstr :{0}", txtPPort.Text));
        pro.StandardInput.WriteLine("exit");
        Regex reg = new Regex("\\s+", RegexOptions.Compiled);
        string line = null;
        while ((line = pro.StandardOutput.ReadLine()) != null)
        {
            line = line.Trim();
            if (!line.StartsWith("TCP") && !line.StartsWith("UDP"))
            {
                continue;
            }
            Console.WriteLine(line);
            line = line.Trim();
            SearchedProcessInfo info = new SearchedProcessInfo();
            line = reg.Replace(line, ",");
            string[] arr = line.Split(',');
            string soc = arr[1];
            int pos = soc.LastIndexOf(':');
            info.UsePort = soc.Substring(pos + 1);
            info.Protocol = arr[0];
            if (line.StartsWith("TCP"))
            {
                info.ProcessID = Convert.ToInt32(arr[4]);
                info.Status = arr[3];
            }
            else
            {
                info.ProcessID = Convert.ToInt32(arr[3]);
            }
            try
            {
                Process pTmp = Process.GetProcessById(Convert.ToInt32(info.ProcessID));
                info.ProcessName = pTmp != null ? pTmp.ProcessName : String.Empty;
            }
            catch(Exception exx)
            {
                info.ProcessName = String.Empty;
            }            
            
            searchResult.Add(info);
        }
        ...
    }
    catch (Exception exp)
    {
        MessageBox.Show(exp.Message);
    }
    finally
    {
        if(pro != null)
        {
            pro.Close();
        }
    }到此這篇關于C#獲取本地應用進程和端口號的實現(xiàn)示例的文章就介紹到這了,更多相關C#獲取進程和端口號內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
 C#實現(xiàn)微信結合百度api獲取當前用戶地理位置的方法
這篇文章主要介紹了C#實現(xiàn)微信結合百度api獲取當前用戶地理位置的方法,結合實例形式分析了C#調(diào)用微信與百度API接口的相關操作技巧,需要的朋友可以參考下2017-07-07
 C#實現(xiàn)為類和函數(shù)代碼自動添加版權注釋信息的方法
這篇文章主要介紹了C#實現(xiàn)為類和函數(shù)代碼自動添加版權注釋信息的方法,主要涉及安裝文件的修改及函數(shù)注釋模板的修改,需要的朋友可以參考下2014-09-09

