-
[C++] 모든 프로세스명 가져오기프로그래밍/C++ 2019. 2. 18. 21:31728x90
C/C++ 로 프로그래밍을 하다 보면 C#에서 사용했던 수 많은 API들이 생각이 날 때가 많다.
프로세스 명 가져오기 같은 경우도, C#에서는
Process[] allProc = Process.GetProcesses();
이렇게 한 줄로 끝나지만,
C/C++에서는 그런 거 없다...
구글링을 하던 중 좋은 예제를 찾아서 하나 소개하려 한다.
#pragma once #pragma comment(lib, "Wtsapi32.lib") #include <Windows.h> #include <WtsApi32.h> #include <vector> #include <iostream> #include <string> #include <algorithm> std::vector<std::string> ProcessName; void GetAllProcess() { WTS_PROCESS_INFO* pWPIs = NULL; DWORD dwProcCount = 0; ProcessName.clear(); if (WTSEnumerateProcesses(WTS_CURRENT_SERVER_HANDLE, NULL, 1, &pWPIs, &dwProcCount)) { //모든 주석 긁어오기 for (DWORD i = 0; i < dwProcCount; i++) { ProcessName.push_back(pWPIs[i].pProcessName); //pWPIs[i].pProcessName //pWPIs[i].ProcessId //pWPIs[i].SessionId //pWPIs[i].pUserSid } std::sort(ProcessName.begin(), ProcessName.end()); } //메모리 해제 if (pWPIs) { WTSFreeMemory(pWPIs); pWPIs = NULL; } } int main() { GetAllProcess(); for (int i = 0; i < ProcessName.size(); i++) { std::cout << ProcessName[i] << std::endl; } return 0; }
Windows XP이후 운영체제에서 사용할 수 있는 WTSEnumerateProcesses를 이용한 모든 프로세스 이름를 가져오는 로직이다.
25번째 줄 std::sort에 의해 성공적으로 오름차 순으로 정렬되어 나온 프로세스 목록이다.
728x90댓글