如何获取系统进程的变化情况

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
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值