在C#Winforms应用程序中从命令提示符收集数据的好方法是什么?

| 这是我作为StackOverflow会员的第一天,我不得不说,我很喜欢这个网站背后的想法运作得很好!无论如何,问题是: 我正在创建一个C#Windows Forms应用程序,该应用程序关注计算机的所有网络统计信息。可以通过在命令提示符下输入\“ netstat \”来完成,但是对于如今的普通计算机用户来说,黑色矩形相当令人生畏,并且输出不会定期更新,相反,用户必须重新键入命令才能获得最新信息。 我想要做的是有一个代码,该代码每秒钟触发一次,以在命令提示符下使用\“ netstat -noa \”命令并将数据反馈到带有“ PID \”,\“列的DataGridView控件中外部地址”和“处理状态”。问题是,我从未在GUI App中使用命令提示符做过很多事情,而且对于如何将弹出命令的文本表以一种有组织的方式以及在我的DataGridView列中完全不了解。我相信该网站上可能有一个类似的帖子,但我也相信它可能基于Linux。 感谢大家的帮助! 编辑:哇,两个小时后我没想到会有这么多输入!你们真棒!与其他网站相比,这里的体验要好得多。我真的很期待为应用程序试用个人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/zh-cn/library/system.net.networkinformation.ipglobalproperties.getactivetcpconnections(v=VS.80).aspx     
抓取命令提示符的输出是一种方法-这是有关从控制台窗口进行复制和粘贴的stackoverflow帖子 一个更实质性的方法是像这个家伙那样建立自己的netstat实现     
使用“ 0”运行命令并捕获其输出: 如何在.NET中产生一个进程并捕获其STDOUT?     
有点hack,但是您可以将netstat的输出重定向到文件“ netstat -noa> c:\\ netstat.txt \”,然后加载文件并对其进行解析...     
然后,未来的Windows版本将更改netstat输出的格式,这将破坏您的程序。您为什么不只调用实际的Windows API来提供所需的数据,而不是进行“屏幕抓取”黑客操作?这就是Windows Managmenent Instrumentation的目的。 如何从Windows程序访问类似于netstat的以太网统计信息     
您可以使用System.Diagnostics.Process并将startinfo的RedirectStandardOutput属性设置为true。这样,您就可以将StandardOutput作为streamreader获取。确保将UseShellExecute属性设置为false,将CreateNoWindow属性设置为true。     

要回复问题请先登录注册