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
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