본문 바로가기

Game Programming/C++

Process Search

현재 작업관리자에 있는 목록을 모두 얻어 온 후 자기가 지정(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