현재 작업관리자에 있는 목록을 모두 얻어 온 후 자기가 지정(name)한 이름과
대조하여 결과값을 Return한다.
있을 경우 Return True, 없을 경우 Return False이다.
#include <TlHelp32.h>
bool cSessionEx::ProcessRunning(wchar_t name[])
{
wchar_t compare[256];
bool procRunning = false;
HANDLE hProcessSnap;
PROCESSENTRY32 pe32;
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hProcessSnap == INVALID_HANDLE_VALUE) {
procRunning = false;
}
else {
pe32.dwSize = sizeof(PROCESSENTRY32);
if (Process32First(hProcessSnap, &pe32)) { // Gets first running process
if (pe32.szExeFile == name) {
procRunning = true;
}
else {
// loop through all running processes looking for process
while (Process32Next(hProcessSnap, &pe32)) {
// Set to an AnsiString instead of Char[] to make compare easier
//compare = pe32.szExeFile;
wcscpy(compare, pe32.szExeFile);
if (0==wcscmp(compare, name)) {
// if found process is running, set to true and break from loop
procRunning = true;
break;
}
}
}
// clean the snapshot object
CloseHandle(hProcessSnap);
}
}
return procRunning;
}
'Game Programming > C++' 카테고리의 다른 글
| 패턴 - 3. 옵저버 패턴(Observer Pattern) (0) | 2016.09.18 |
|---|---|
| cUrl 사용 push (0) | 2014.06.18 |
| Port OpenCheck (0) | 2014.06.18 |
| Program Rerun (0) | 2014.06.18 |
| Process Kill (0) | 2014.06.18 |