HWND(콘솔 창 핸들)를 가져오는 방법
이 문서에서는 HWND(콘솔 창 핸들)를 가져오는 방법을 설명합니다.
적용 대상: Windows Server 2012 R2
원래 KB 번호: 124103
요약
콘솔 애플리케이션과 연결된 창을 조작하는 것이 유용할 수 있습니다. Win32 API는 콘솔 애플리케이션과 연결된 창 핸들을 가져오기 위한 직접 메서드를 제공하지 않습니다. 그러나 를 호출 FindWindow()
하여 창 핸들을 가져올 수 있습니다. 이 함수는 클래스 이름 또는 창 이름을 기반으로 창 핸들을 검색합니다.
를 호출 GetConsoleTitle()
하여 현재 콘솔 타이틀을 확인합니다. 그런 다음 현재 콘솔 타이틀을 에 입력합니다 FindWindow()
.
추가 정보
여러 창에 동일한 타이틀이 있을 수 있으므로 현재 콘솔 창 제목을 고유한 제목으로 변경해야 합니다. 잘못된 창 핸들이 반환되지 않도록 하는 데 도움이 됩니다. 를 사용하여 SetConsoleTitle()
현재 콘솔 창 제목을 변경합니다. 프로세스는 다음과 같습니다.
를 호출
GetConsoleTitle()
하여 현재 콘솔 창 제목을 저장합니다.를 호출
SetConsoleTitle()
하여 콘솔 타이틀을 고유한 타이틀로 변경합니다.Sleep(40)을 호출하여 창 제목이 업데이트되었는지 확인합니다.
호출
FindWindow
(NULL, uniquetitle) HWND를 가져오려면 이 호출은 작업이 실패한 경우 HWND 또는 NULL을 반환합니다.1단계에서 검색된 값을 사용하여 를 호출
SetConsoleTitle()
하여 원래 창 제목을 복원합니다.
결과 HWND를 테스트해야 합니다. 예를 들어 HWND를 호출 GetWindowText()
하고 결과를 GetConsoleTitle()
와 비교하여 반환된 HWND가 현재 프로세스와 일치하는지 테스트할 수 있습니다.
결과 HWND가 모든 창 핸들 작업에 적합하지는 않습니다.
샘플 코드
다음 함수는 현재 콘솔 애플리케이션 창 핸들(HWND)을 검색합니다. 함수가 성공하면 반환 값은 콘솔 창의 핸들입니다. 함수가 실패하면 반환 값은 NULL입니다. 간결하게 하기 위해 일부 오류 검사는 생략됩니다.
HWND GetConsoleHwnd(void)
{
#define MY_BUFSIZE 1024 // Buffer size for console window titles.
HWND hwndFound; // This is what is returned to the caller.
char pszNewWindowTitle[MY_BUFSIZE]; // Contains fabricated
// WindowTitle.
char pszOldWindowTitle[MY_BUFSIZE]; // Contains original
// WindowTitle.
// Fetch current window title.
GetConsoleTitle(pszOldWindowTitle, MY_BUFSIZE);
// Format a "unique" NewWindowTitle.
wsprintf(pszNewWindowTitle,"%d/%d",
GetTickCount(),
GetCurrentProcessId());
// Change current window title.
SetConsoleTitle(pszNewWindowTitle);
// Ensure window title has been updated.
Sleep(40);
// Look for NewWindowTitle.
hwndFound=FindWindow(NULL, pszNewWindowTitle);
// Restore original window title.
SetConsoleTitle(pszOldWindowTitle);
return(hwndFound);
}
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기