반응형

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
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기