想用C#实现判断指定进程是否存在,若存在,则杀掉进程或者弹出一个对话框提示用户,比如监控QQ进程,如何实现呢???

解决方案 »

  1.   


    Process[] processes = Process.GetProcessesByName(processName);
      返回
      

  2.   

     
    Process[] pro = Process.GetProcessesByName("Test");
                for (int i = 0; i < pro.Length; i++)
                {
                    pro[i].Kill();
                }
      

  3.   


    [DllImport("user32.dll", EntryPoint = "FindWindow")]
            public static extern int FindWindow(
                string lpClassName,
                string lpWindowName
            );
     int hWnd = FindWindow(null, "QQ");
                if (hWnd == 0)
    {
       //不存在
    }
    else
    {
    //存在
    }
      

  4.   

    解决了,贴出来,供大家参考命名空间是using System.Diagnostics;string name = "aaa";//程序进程名称
       int ProgressCount = 0123456;//判断进程是否运行的标识
       Process[] prc = Process.GetProcesses(); 
       foreach(Process pr in prc) //遍历整个进程
       { 
                if (name == pr.ProcessName) //如果进程存在
                {     
                        ProgressCount = 0; //计数器清空
                         return;
                } 
       }
       if(ProgressCount!=0)//如果计数器不为0,说名所指定程序没有运行
       {
        try
        {
         //调用外部程序
         Process MyProcess = new Process();
         MyProcess.StartInfo.FileName = "d:/aaa.exe";
         MyProcess.StartInfo.Verb = "Open";
         MyProcess.StartInfo.CreateNoWindow = true;
         MyProcess.Start();
        }
        catch(Exception d)
        {
         MessageBox.Show(d.Message+"","提示!!!!");
        }
       }
       else
       {
        MessageBox.Show("对不起,本地已经有系统正在运行!\n.","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning);
       }
      

  5.   

    name.Equals(pr.ProcessName)
    private void KillProcess(string processName)
    {
    System.Diagnostics.Process myproc= new System.Diagnostics.Process();
    try{
    foreach (Process thisproc in Process.GetProcessesByName(processName)) {
    if(!thisproc.CloseMainWindow()){
    thisproc.Kill();
    }
    }
    }
    catch(Exception Exc)
    {
    }
     GC.Collect();
    }