xp,2000 2种系统,搜索系统中是否有"xxx.exe"程序在运行,如果有就杀掉.改怎么做啊

解决方案 »

  1.   

    EnumProcesses 枚举进程
    TerminateProcess 杀进程,如果权限不够,要提升自己的权限,网上搜一下,杀进程的函数有好多写好的
      

  2.   

    楼上的中间再加一条语句:OpenProcess以获得进程句柄。
      

  3.   

    HANDLE hd=FindWindow(NULL,"ABC");
         if(hd)
    {
    DWORD ExitCode;
    if(GetExitCodeProcess(hd,&ExitCode))
    {
    if(TerminateProcess(hd,ExitCode))
    {
    AfxMessageBox(_T("关闭了"),MB_OK | MB_ICONSTOP);
    }
    }
         }这样不行呢  if(GetExitCodeProcess(hd,&ExitCode)) 就退出了
      

  4.   

    先遍历找到你要删除的进程的HANDLE,然后调用TerminateProcess终止进程,由于该函数TerminateProcess是个异步函数,所以需要类似于WaitForSingleObject函数,传递xxx.exe的句柄,来判断该进程是否已经结束。
      

  5.   

    另外GetExitCodeProcess该函数主要来获取参数指定的进程的退出代码,所以你应该是在TerminateProcess后才调用,来判断该进程是否终止。同时GetExitCodeProcess函数一般是用个循环来不断的调用,即在循环中调用GetExitCodeProcess来检查进程的状态。你的退出是因为判断条件不符合。在循环中调用GetExitCodeProcess,效率不高,应该用WaitForSingleObject来等待,这个效率高。