using System; using System.Collections.Generic; using System.Text; using System.Diagnostics; using System.Collections; using System.Threading; namespace WNSS.InfoCollection ... { class ProcessInfo ...{ /**//// <summary> /// 将在pro1中,而不在pro2中的process.id返回 /// </summary> /// <param name="Process1">新的进程列表</param> /// <param name="Process2">旧的进程列表</param> /// <returns>process.id列表</returns> public static ArrayList compare(Process[] Process1, Process[] Process2) ...{ int flag = 0; ArrayList pro = new ArrayList(); for (int i = 0; i < Process1.Length; i++) ...{ flag = 0; for (int j = 0; j < Process2.Length; j++) ...{ if (Process1[i].Id == Process2[j].Id) ...{ flag = 1; break; }//if }//for,j if (flag == 0) ...{ pro.Add(Process1[i].Id); } }//for,i return pro; //throw new System.NotImplementedException(); } /**//// <summary> /// 获取新创建的进程 /// </summary> /// <param name="Process_Old"></param> /// <param name="Process_New"></param> /// <returns>返回进程号列表</returns> public static ArrayList getProStart(Process[] Process_Old, Process[] Process_New) ...{ ArrayList startList = compare(Process_New, Process_Old); return startList; //throw new System.NotImplementedException(); } /**//// <summary> /// 获取终止的进程 /// </summary> /// <param name="Process_Old"></param> /// <param name="Process_New"></param> /// <returns>返回进程号列表</returns> public static ArrayList getProEnded(Process[] Process_Old, Process[] Process_New) ...{ ArrayList endList = compare(Process_Old, Process_New); return endList; //throw new System.NotImplementedException(); } /**//// <summary> /// 获取进程变化 /// </summary> public static void Run() ...{ //while(1)进行持续获取 ArrayList proStart = new ArrayList(); ArrayList proEnd = new ArrayList(); Process[] old_Process = Process.GetProcesses(); Thread.Sleep(1000); Process[] new_Process = Process.GetProcesses(); proStart = getProStart(old_Process, new_Process); proEnd = getProEnded(old_Process, new_Process); WNSSDataSetTableAdapters.ProcessTableAdapter proAdapter = new WNSS.WNSSDataSetTableAdapters.ProcessTableAdapter(); foreach (int number in proStart) ...{ //string str = ""; int i = 0, flag = 0; while (flag == 0) ...{ if (number == new_Process[i].Id) ...{ proAdapter.Insert(Client.testClientIP, DateTime.Now, new_Process[i].Id, new_Process[i].ProcessName, "START"); //str = str + new_Process[i].Id.ToString() + ", " + new_Process[i].ProcessName + " "; flag = 1; } i++; } } foreach (int number in proEnd) ...{ //string str = ""; int i = 0, flag = 0; while (flag == 0) ...{ if (number == old_Process[i].Id) ...{ proAdapter.Insert(Client.testClientIP, DateTime.Now, old_Process[i].Id, old_Process[i].ProcessName, "EXIT"); //str = str + old_Process[i].Id.ToString() + ", " + old_Process[i].ProcessName + " "; flag = 1; } i++; } }//foreach,proEnd }//run }//class} // namespace