Hi~ Summers!!

프로세스 리스트 본문

개발/VC++

프로세스 리스트

eNaNII 2006. 2. 16. 14:18

저도 이전에 데브피아에서 프로세스 정보를 얻는 소스를 찾았습니다.

어느분이 올려주신지는 모르는게 급한와중에 아주 요긴하게 사용했었답니다. 참고하십시요...단, Console입니다.

환경에 옵티마이징 하십시요!!

CreateToolhelp32Snapshot() 메소드는 쓰레드에 의해 돌고있는 프로쎄쓰 정보 / 힙 / 모듈의 정보를 스냅샷찍어서

그 정보를 가져오는 것입니다. 프로세스라는건 시시각각 변화되므로 어느 순간에 스냅샷을 찍어 정보를 찍어보는거구요

프로세스의 정보는 pe32안에 있습니다. MSDN을 통해 멤버를 확인하십시요..루프돌면서 스냅샷에 찍힌 녀석들 가져와서 뿌려주는

루틴이랍니다.

#include "windows.h"

#include "Tlhelp32.h"

#include "stdio.h"

DWORD TaskList();

void main(void)

{

TaskList();

}

DWORD TaskList()

{

HANDLE hProcessSnap = NULL;

DWORD Return = FALSE;

PROCESSENTRY32 pe32 = {0};

hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

if (hProcessSnap == INVALID_HANDLE_VALUE)

{

return (DWORD)INVALID_HANDLE_VALUE;

}

pe32.dwSize = sizeof(PROCESSENTRY32);

if (Process32First(hProcessSnap, &pe32))

{

DWORD Code = 0;

DWORD dwPriorityClass;

do

{

HANDLE hProcess;

// Get the actual priority class.

hProcess = OpenProcess (PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID);

//if(!hProcess)

// break;

dwPriorityClass = GetPriorityClass (hProcess);

CHAR Temp[MAX_PATH];

strcpy(Temp,pe32.szExeFile);

printf("%s : %d\n",Temp,pe32.th32ProcessID);

//Temp.MakeLower();

/*if (Temp == ProcessName)

{

if (TerminateProcess(hProcess, 0))

{

GetExitCodeProcess(hProcess, &Code);

}

else

{

return GetLastError();

}

}

*/

CloseHandle (hProcess);

}

while (Process32Next(hProcessSnap, &pe32));

Return = TRUE;

}

else

{

Return = FALSE;

}

CloseHandle (hProcessSnap);

return Return;

}

Comments