怎样检测启动的进程并进行控制 ?我想在启动一个进程的时候看看是否已经启动了,如果已经启动了,那么就把它杀掉,然后再重新启动一次。或者是如果已经启动了的话,就不再启动了。请问有做过这方面的朋友吗?

解决方案 »

  1.   

    如果是自己的程序,一般可以通过互斥量进行判断;如果是其他程序就得通过Hook API的方式,比如CreateProcess函数,来进行控制。不过你的逻辑比较混乱:“如果已经启动了,那么就把它杀掉,然后再重新启动一次”、“如果已经启动了的话,就不再启动了”不知道到底要干啥。
      

  2.   

    楼上的朋友,我这么写的,不知道对否,准备测试一下。
        //Mutex
        HANDLE hMutex = ::CreateMutex(NULL,TRUE,_T("App.exe"));
        if(hMutex != NULL)
        {
          if(GetLastError()==ERROR_ALREADY_EXISTS)
          {
            return FALSE;
          }
        }放在了InitInstance 函数中。
      

  3.   

    可以,不过最好用::CreateMutex(NULL, FALSE, _T("App.exe"));