bool IsExistProcess( LPCTSTR pszProName )
{
PROCESSENTRY32 pe;
pe.dwSize = sizeof(PROCESSENTRY32);
HANDLE hSnapshot = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hSnapshot == INVALID_HANDLE_VALUE)
{
LOG_ERROR("进程快照失败");
return false;
}
BOOL bFindFirstProcess = ::Process32First(hSnapshot, &pe);
if (bFindFirstProcess)
{
do
{
CString csExeFile = pe.szExeFile;
if (csExeFile.CompareNoCase(pszProName) == 0)
{
HANDLE hProcess = ::OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe.th32ProcessID);
if (INVALID_HANDLE_VALUE != hProcess)
{
::CloseHandle(hProcess);
return true;
}
break;
}
} while (::Process32Next(hSnapshot, &pe));
}
::CloseHandle(hSnapshot);
return false;
}