#include <TlHelp32.h>
#include <process.h>
// 判断当前用户下某进程是否存在,0表示不存在,存在时返回pid
DWORD IsProcessExist(LPCTSTR name)
{
DWORD sid;
ProcessIdToSessionId(_getpid(), &sid);
PROCESSENTRY32 pe;
DWORD id = 0;
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
pe.dwSize = sizeof(PROCESSENTRY32);
if (!Process32First(hSnapshot, &pe))
return 0;
while (1)
{
// 比较进程名
if (wcsstr(pe.szExeFile, (TCHAR*)name))
{
DWORD sessionId;
ProcessIdToSessionId(pe.th32ProcessID, &sessionId);
if (sessionId == sid)
{
return pe.th32ProcessID;
}
}
pe.dwSize = sizeof(PROCESSENTRY32);
if (Process32Next(hSnapshot, &pe) == FALSE)
break;
}
CloseHandle(hSnapshot);
return 0;
}