C#獲取本地應(yīng)用進(jìn)程和端口號(hào)的實(shí)現(xiàn)示例
后臺(tái)調(diào)用命令行程序,通過(guò)分析netstat命令的返回結(jié)果獲取進(jìn)程信息,主要使用的參數(shù)包括-a(顯示所有連接和偵聽端口)、-n(以數(shù)字形式顯示地址和端口號(hào))、-o(顯示擁有的與每個(gè)連接關(guān)聯(lián)的進(jìn)程 ID),其實(shí)-b(顯示在創(chuàng)建每個(gè)連接或偵聽端口時(shí)涉及的可執(zhí)行程序)也可以用,但是它的返回結(jié)果沒有和前幾個(gè)參數(shù)在一行,分析起來(lái)比較麻煩,就沒有用。另外,如果是查詢端口,還可以在命令行中附帶findstr命令從netstat命令的返回結(jié)果中篩選。最終的示例代碼如下:
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(); } }
到此這篇關(guān)于C#獲取本地應(yīng)用進(jìn)程和端口號(hào)的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)C#獲取進(jìn)程和端口號(hào)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Unity3D Shader實(shí)現(xiàn)貼圖切換效果
這篇文章主要為大家詳細(xì)介紹了Unity3D Shader實(shí)現(xiàn)貼圖切換效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-03-03C# 獲取打印機(jī)當(dāng)前狀態(tài)的方法
C# 獲取打印機(jī)當(dāng)前狀態(tài)的方法,需要的朋友可以參考一下2013-04-04C#爬取動(dòng)態(tài)網(wǎng)頁(yè)上信息得流程步驟
動(dòng)態(tài)內(nèi)容網(wǎng)站使用 JavaScript 腳本動(dòng)態(tài)檢索和渲染數(shù)據(jù),爬取信息時(shí)需要模擬瀏覽器行為,否則獲取到的源碼基本是空的,這篇文章主要給大家詳細(xì)介紹了C#爬取動(dòng)態(tài)網(wǎng)頁(yè)上信息得流程步驟,需要的朋友可以參考下2024-10-10C#實(shí)現(xiàn)微信結(jié)合百度api獲取當(dāng)前用戶地理位置的方法
這篇文章主要介紹了C#實(shí)現(xiàn)微信結(jié)合百度api獲取當(dāng)前用戶地理位置的方法,結(jié)合實(shí)例形式分析了C#調(diào)用微信與百度API接口的相關(guān)操作技巧,需要的朋友可以參考下2017-07-07C#實(shí)現(xiàn)為類和函數(shù)代碼自動(dòng)添加版權(quán)注釋信息的方法
這篇文章主要介紹了C#實(shí)現(xiàn)為類和函數(shù)代碼自動(dòng)添加版權(quán)注釋信息的方法,主要涉及安裝文件的修改及函數(shù)注釋模板的修改,需要的朋友可以參考下2014-09-09C#解析json字符串總是多出雙引號(hào)的原因分析及解決辦法
json好久沒用了,今天在用到j(luò)son的時(shí)候,發(fā)現(xiàn)對(duì)字符串做解析的時(shí)候總是多出雙引號(hào),下面給大家介紹C#解析json字符串總是多出雙引號(hào)的原因分析及解決辦法,需要的朋友參考下吧2016-03-03