簡體   English   中英

在C#Winforms應用程序中從命令提示符收集數據的好方法是什么?

[英]What would be a good way to collect data from the command prompt in a C# Winforms Application?

這是我作為會員在StackOverflow上的第一天,我不得不說我很喜歡這個網站背后的想法是多么有效! 無論如何,問題是:

我正在創建一個C#Windows窗體應用程序,它會關注計算機的所有網絡統計信息。 這可以通過在命令提示符下輸入“netstat”來完成,但是對於普通計算機用戶來說,這個黑色矩形相當令人生畏,並且輸出不會定期更新,而是用戶必須重新鍵入命令才能獲得最多最新信息。

我想要做的是擁有一個代碼,每秒觸發一次,在命令提示符中使用“netstat -noa”命令,並將數據反饋回DataGridView控件,其中包含“PID”,“外部地址”列和“過程狀態”。 問題是,我從來沒有在GUI應用程序中使用命令提示做了太多工作,並且完全不知道如何將彈出命令的文本表變為有組織的方式和我的DataGridView列。 我相信網站上可能有一個類似的帖子,但我也相信它可能是基於Linux的。

感謝大家的幫助!

編輯:哇,兩小時后我沒想到這么多的投入! 你們真棒! sites. 這里的體驗比以前的網站要好得多。 我真的很期待為應用程序嘗試個人netstat實現和/或加速Windows PowerShell。 但是,直到明天我才能嘗試任何事情,因為我現在已經很晚了。 我想我們明天會看到什么有用。 大家歡呼。

我知道你已經標記了c#,但你有沒有考慮使用Powershell? 它非常適合從外國盒子請求數據。

推薦閱讀: http//blogs.msdn.com/b/spike/archive/2010/02/04/how-to-query-for-netstat-info-using-powershell.aspx

或者,谷歌:powershell netstat


就C#而言,您可能需要GetActiveTcpConnections():

http://msdn.microsoft.com/en-us/library/system.net.networkinformation.ipglobalproperties.getactivetcpconnections(v=VS.80).aspx

抓取命令提示符的輸出是一種方法 - 這是一個關於從控制台窗口復制和粘貼的stackoverflow帖子

一個更實質的方法是建立你自己的netstat實現, 就像這個人一樣

使用Process運行命令並捕獲其輸出:

有點破解,但你可以將netstat的輸出重定向到文件“netstat -noa> c:\\ netstat.txt”,然后加載文件並解析它......

然后,未來版本的Windows將改變netstat輸出的格式,它將破壞您的程序。 而不是做一個“屏幕抓取”黑客為什么不調用實際的Windows API來為您提供您正在尋找的數據? 這就是Windows Managmenent Instrumentation的用途。

如何從Windows程序訪問類似netstat的以太網統計信息

您可以使用System.Diagnostics.Process並將startinfoRedirectStandardOutput屬性設置為true。 這樣您就可以將StandardOutput作為流讀取器。 確保將UseShellExecute屬性設置為false,並將CreateNoWindow屬性設置為true。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM