-
[C++] 모든 프로세스명 가져오기프로그래밍/C++ 2019. 2. 18. 21:31728x90
C/C++ 로 프로그래밍을 하다 보면 C#에서 사용했던 수 많은 api들이 생각이 날 때가 많다.
프로세스 명 가져오기 같은 경우도, C#에서는
1Process[] allProc = Process.GetProcesses();cs 이렇게 한 줄로 끝나지만,
C/CPP에서는 그런 거 없다...
구글링을 하던 중 좋은 예제를 찾아서 하나 소개하려 한다.
1234567891011121314151617181920212223242526272829303132333435363738394041#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;}cs Windows XP이후 운영체제에서 사용할 수 있는 WTSEnumerateProcesses를 이용한 모든 프로세스 이름를 가져오는 로직이다.
25번째 줄 std::sort에 의해 성공적으로 오름차 순으로 정렬되어 나온 프로세스 목록이다.
728x90'프로그래밍 > C++' 카테고리의 다른 글
[C/C++] 키보드 후킹 (키로깅) (0) 2019.02.18 [VS2017][C/C++] 콘솔창 사용하지 않기 (0) 2019.02.17 [C++] AES 128 ECB (electronic codebook) 구현 (0) 2019.02.17 댓글