티스토리 뷰
Win32API에서 HWND은 보통 윈도우 핸들값을 갖고 오기위해 사용된다. 약자도 Handle to a WiNDow 이다.
그리고 HANDLE은 void* type으로 보통 프로세스의 핸들을 저장하기 위해 사용된다.
이 예제는 프로세스의 ID알고 있는 상태에서 현재 윈도우에 띄어져 있는 프로세스의 윈도우핸들을 얻어오는 역할을 한다.
// 여기서 알고 있는 프로세스ID는 pi[i].dwProcessId 이다. HWND tempHwnd = FindWindowA(NULL, NULL); ULONG idProc; while(tempHwnd!=NULL){ if(::GetParent(tempHwnd) == NULL){ GetWindowThreadProcessId(tempHwnd, &idProc); if(pi[i].dwProcessId == idProc){ // 이 상태가 프로세스 아이디를 갖고 // 윈도우핸들(tempHwnd)을 얻은 상태이다. break; } } tempHwnd = ::GetNextWindow(tempHwnd, GW_HWNDNEXT); }
또한, 윈도우핸들을 알고 있을 때 GetWindowThreadProcessId()를 이용하면 프로세스 ID를 얻어올 수 있고,
프로세스 ID를 알고 있을 때, OpenProcess()로 프로세스핸들을 얻어올 수 있다.
이 프로세스핸들을 잘 알고 있으면 꽤나 유용하다.
'Programming Languages > C,C++' 카테고리의 다른 글
TCHAR의 정의 (1) | 2011.05.01 |
---|---|
Editplus, VisualC++ 컴파일러에서 어셈블리까지 (1) | 2011.04.26 |
Assembly의 기초 공부 (0) | 2011.04.23 |
윈도우핸들, 프로세스ID, 프로세스핸들 (1) | 2011.04.23 |
TEXT Encoding에 대하여. (2) | 2011.04.23 |
댓글
01-03 00:52
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday