반응형
address, C++, C++기초, Console, Unicode, 게임매크로, 유니코드, 주소, 초보, 포인터
이전에 user32.dll을 이용해서 C# 환경에서 프로세스 목록 가져오는 포스팅을 했다.
이번엔 C++ 환경에서 동일한 작업을 수행한다.
1. 필요 라이브러리
-. C#에서는 user32.dll이라는 C++ 라이브러리 import를 수행해야 했는데, C++컴파일러는 자체적으로 winuser32.h라는 라이브러리를 지원하고, 이는 Windows.h 라는 윈도 api 라이브러리 모음집 내에 포함되어 있다.
-. 따라서, #include <Windows.h> 하나만으로 해결된다.
2. 사용 함수.
-. 이전 포스팅에서 사용한 함수와 동일하게, EnumWindows와 그에 해당하는 콜백 EnumWindowsProc을 사용하겠다. (콜백 이름은 자유롭게 설정 가능)
-. 다소 복잡했던 C#과 달리, EnumWindows(콜백, NULL)만으로 간단하게 작성하면 된다.
EnumWindows(EnumWindowsProc, NULL);
-. 각 window handle에 대해 반복작업을 수행하는 콜백 함수에서는 window title 확인하고, 타이틀 길이가 0보다 크면 (제목이 있는 프로세스면) 출력하는 작업을 수행한다.
int main(void) {
EnumWindows(EnumWindowsProc, NULL);
return 0;
}
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lparam)
{
_TCHAR wintitle[1024];
_TCHAR buf[100] = L"test";
int titleLength = GetWindowTextLength(hwnd);
if (titleLength > 0) {
GetWindowText(hwnd, wintitle, 1024);
wcout << hwnd << ": " << wintitle << endl;
wcout << hwnd << ": " << buf << endl;
}
return TRUE;
}
3. 출력 결과
728x90
반응형
'C++' 카테고리의 다른 글
[C++] C++ 기초3 - 포인터(pointer), 변수의 주소, 멀티레벨 포인터 (0) | 2020.12.27 |
---|---|
[C++] C++ 기초2 - 유니코드(Unicode) 한글문자 출력 (0) | 2020.12.27 |
[C++] C++ 기초1 - class, source, header 추가 (0) | 2020.12.27 |
최근댓글