본문 바로가기
프로그래밍/Windows

[Windows] 프로세스 정보 확인하기 (Win32API)

by Hwan,. 2015. 8. 23.
728x90
반응형

1. 설명

- 현재 프로세스 정보

DWORD pid;
HANDLE hdl;

pid = GetCurrentProcessId();
hdl = OpenProcess(MAXIMUM_ALLOWED, FALSE, pid);

 

- 다른 프로세스 정보

HWND hWnd;
DWORD pid;
HANDLE hdl;

// 윈도우 이름으로 윈도우 핸들을 얻음.
hWnd = FindWindow(NULL, L"Window Name");
// hWnd의 pid값 구하기
GetWindowThreadProcessId(hWnd, &pid);
// 얻은 pid값으로 대상 프로세스의 핸들을 얻음.
hdl = OpenProcess(MAXIMUM_ALLOWED, FALSE, pid);
 

- 여러 프로세스 정보

#include "tlhelp32.h"

HANDLE hSnapShot = INVALID_HANDLE_VALUE;
PROCESSENTRY32 pe;

// 스냅샷
pe.dwSize = sizeof( PROCESSENTRY32 );
hSnapShot = CreateToolhelp32Snapshot( TH32CS_SNAPALL, NULL );

// 프로세스 목록의 끝까지 반복
Process32First(hSnapShot, &pe);
do
{
    // PROCESSENTRY32 구조체를 이용하여 프로세스 정보 획득 가능
}
while(Process32Next(hSnapShot, &pe));

CloseHandle(hSnapShot);

 

2. PROCESSENTRY32 구조체
typedef struct tagPROCESSENTRY32 {
  DWORD     dwSize;
  DWORD     cntUsage;
  DWORD     th32ProcessID; // PID
  ULONG_PTR th32DefaultHeapID;
  DWORD     th32ModuleID;
  DWORD     cntThreads; // 프로세스 내부의 쓰레드 개수
  DWORD     th32ParentProcessID; // 부모 프로세스 ID
  LONG      pcPriClassBase;
  DWORD     dwFlags;
  TCHAR     szExeFile[MAX_PATH]; // 프로세스 실행 경로
} PROCESSENTRY32, *PPROCESSENTRY32;
 
728x90
반응형

댓글