判断一个指定的进程是否存在

在VS2005中,新建一个Win32 Project,在入口函数WinMain中加入下面代码,

int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{ 
  //////////////////////////////////////////////////////////////////////////
  MessageBoxA(NULL, "WinMain 1", "test", MB_OK);
  HANDLE dlgHandle = ::CreateMutex( NULL, FALSE, _T("RtNavi.exe"));
  if (dlgHandle)
  {
    //GetLastError调用一次后会清空错误信息
    long error = GetLastError();

    char buffer[128];
    memset(buffer, 0, sizeof(buffer));
    sprintf(buffer, "GetLastError = %d", error);
    MessageBoxA(NULL, buffer, "test", MB_OK);

    if(error == ERROR_ALREADY_EXISTS)
    {   
      MessageBoxA(NULL, "该应用程序已经存在!", "test", MB_OK);
      CloseHandle( dlgHandle );
      return FALSE;
    }    
  }

  MessageBoxA(NULL, "WinMain 3", "test", MB_OK);
  //////////////////////////////////////////////////////////////////////////
  
  ……
  ……
  ……
}

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。