如何用c#来判断一个进程是否是连网进程? 如题.比如:qq.exe 肯定是连网进程.就是判断这个进程使没使用网络.请高手指点. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 netstat -ano 然后去获取进程列表 比较 顶下 用 uid 比较比较 public static DataTable GetProcessesNetList() { System.Diagnostics.Process _DosProcess = new System.Diagnostics.Process(); _DosProcess.StartInfo.FileName = "cmd.exe"; _DosProcess.StartInfo.Arguments = "/C NETSTAT -ANO"; _DosProcess.StartInfo.CreateNoWindow = true; _DosProcess.StartInfo.RedirectStandardOutput = true; _DosProcess.StartInfo.UseShellExecute = false; _DosProcess.Start(); _DosProcess.WaitForExit(); string _ReturnText = _DosProcess.StandardOutput.ReadToEnd(); string[] _ReturnList = _ReturnText.Remove(0, _ReturnText.IndexOf("PID") + 3).Trim().Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); DataTable _Table = new DataTable("Process"); _Table.Columns.Add("Pid"); _Table.Columns.Add("ProcessName"); _Table.Columns.Add("Proto"); _Table.Columns.Add("Local"); _Table.Columns.Add("Foreign"); _Table.Columns.Add("State"); for (int i = 0; i != _ReturnList.Length; i++) { string[] _NetDate = _ReturnList[i].Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); if (_NetDate.Length == 5) { _Table.Rows.Add(new object[] { _NetDate[4], System.Diagnostics.Process.GetProcessById(int.Parse(_NetDate[4])).ProcessName, _NetDate[0], _NetDate[1], _NetDate[2], _NetDate[3] }); } else { _Table.Rows.Add(new object[] { _NetDate[3], System.Diagnostics.Process.GetProcessById(int.Parse(_NetDate[3])).ProcessName, _NetDate[0], _NetDate[1], _NetDate[2], "" }); } } return _Table; }这个应该对你有帮助...你查询返回的_Table看看PID是否有你想要的 谢谢 zgke 除了使用netstat命令,还有别的方法吗?请zgke赐教!就算是实现不了也可以的.如果用vc的话,也是要用这种方式吗?马上结贴 另外的方法APIAllocateAndGetTcpExTableFromStackAllocateAndGetUdpExTableFromStack 菜鸟问题 showModalDialog 的问题 急!反射时如何来识别某个参数是个 params 变量? 请将这句VB语句转换为C#语句 坐标计算,求解,谢谢先! 在窗体中画了一个图形,如何可以翻转? 连接ORALCE 数据库 请问哪里有MSDN2002下载? 我的c#怎么这么慢,受不了了 这个咋弄啊 hash表设计,问题,有点难,一个算法…… 关于屏幕键盘 急!!
用 uid 比较比较
{
System.Diagnostics.Process _DosProcess = new System.Diagnostics.Process();
_DosProcess.StartInfo.FileName = "cmd.exe";
_DosProcess.StartInfo.Arguments = "/C NETSTAT -ANO";
_DosProcess.StartInfo.CreateNoWindow = true;
_DosProcess.StartInfo.RedirectStandardOutput = true;
_DosProcess.StartInfo.UseShellExecute = false;
_DosProcess.Start();
_DosProcess.WaitForExit(); string _ReturnText = _DosProcess.StandardOutput.ReadToEnd();
string[] _ReturnList = _ReturnText.Remove(0, _ReturnText.IndexOf("PID") + 3).Trim().Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
DataTable _Table = new DataTable("Process");
_Table.Columns.Add("Pid");
_Table.Columns.Add("ProcessName");
_Table.Columns.Add("Proto");
_Table.Columns.Add("Local");
_Table.Columns.Add("Foreign");
_Table.Columns.Add("State"); for (int i = 0; i != _ReturnList.Length; i++)
{
string[] _NetDate = _ReturnList[i].Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
if (_NetDate.Length == 5)
{
_Table.Rows.Add(new object[] { _NetDate[4], System.Diagnostics.Process.GetProcessById(int.Parse(_NetDate[4])).ProcessName, _NetDate[0], _NetDate[1], _NetDate[2], _NetDate[3] });
}
else
{
_Table.Rows.Add(new object[] { _NetDate[3], System.Diagnostics.Process.GetProcessById(int.Parse(_NetDate[3])).ProcessName, _NetDate[0], _NetDate[1], _NetDate[2], "" });
}
}
return _Table;
}这个应该对你有帮助...你查询返回的_Table看看PID是否有你想要的
APIAllocateAndGetTcpExTableFromStackAllocateAndGetUdpExTableFromStack