다음을 통해 공유


SetForegroundWindow 함수(winuser.h)

지정된 창을 만든 스레드를 포그라운드로 가져와 창을 활성화합니다. 키보드 입력이 창으로 전달되고 사용자에 대한 다양한 시각적 신호가 변경됩니다. 시스템은 다른 스레드보다 포그라운드 창을 만든 스레드에 약간 더 높은 우선 순위를 할당합니다.

Syntax

BOOL SetForegroundWindow(
  [in] HWND hWnd
);

매개 변수

[in] hWnd

형식: HWND

활성화되어 포그라운드로 가져와야 하는 창에 대한 핸들입니다.

반환 값

형식: BOOL

창이 전경으로 가져온 경우 반환 값은 0이 아닌 값입니다.

창을 포그라운드로 가져오지 않은 경우 반환 값은 0입니다.

비고

시스템은 포그라운드 창을 설정할 수 있는 프로세스를 제한합니다. 프로세스는 다음과 같은 경우에만 SetForegroundWindow 를 호출하여 포그라운드 창을 설정할 수 있습니다.

  • 다음 조건은 모두 true입니다.
    • 호출 프로세스는 UWP 앱이나 Windows 8 또는 8.1용으로 설계된 Windows 스토어 앱이 아닌 데스크톱 애플리케이션에 속합니다.
    • 전경 프로세스는 LockSetForegroundWindow 함수에 대한 이전 호출로 SetForegroundWindow에 대한 호출을 사용하지 않도록 설정하지 않았습니다.
    • 활성화된 메뉴가 없습니다.
  • 또한 다음 조건 중 하나 이상이 true입니다.
    • 포그라운드 잠금 제한 시간이 만료되었습니다(SystemParametersInfo의 SPI_GETFOREGROUNDLOCKTIMEOUT 참조).
    • 호출 프로세스는 포그라운드 프로세스입니다.
    • 호출 프로세스는 포그라운드 프로세스에 의해 시작되었습니다.
    • 현재 전경 창이 없으므로 전경 프로세스가 없습니다.
    • 호출 프로세스에서 마지막 입력 이벤트를 수신했습니다.
    • 포그라운드 프로세스 또는 호출 프로세스가 디버그되고 있습니다.

이러한 조건을 충족하는 경우에도 프로세스에서 포그라운드 창을 설정할 수 있는 권한이 거부될 수 있습니다.

사용자가 다른 창으로 작업하는 동안 애플리케이션은 창을 포그라운드로 강제 적용할 수 없습니다. 대신 Windows에서 창의 작업 표시줄 단추를 깜박이면 사용자에게 알립니다.

포그라운드 창을 설정할 수 있는 프로세스는 AllowSetForegroundWindow 함수를 호출하여 다른 프로세스가 포그라운드 창을 설정할 수 있도록 할 수 있습니다. AllowSetForegroundWindow에 대한 dwProcessId 매개 변수로 지정된 프로세스는 입력이 해당 프로세스에서 전달되지 않는 한 다음에 사용자가 입력을 생성할 때 또는 AllowSetForegroundWindow에 대한 이전 호출과 동일한 프로세스가 지정되지 않는 한 다음에 프로세스가 AllowSetForegroundWindow를 호출할 때 포그라운드 창을 설정하는 기능을 잃게 됩니다.

포그라운드 프로세스는 LockSetForegroundWindow 함수를 호출하여 SetForegroundWindow에 대한 호출을 사용하지 않도록 설정할 수 있습니다.

Example

다음 코드 예제에서는 SetForegroundWindow를 사용하는 방법을 보여 줍니다.

// If the window is invisible we will show it and make it topmost without the
// foreground focus. If the window is visible it will also be made the
// topmost window without the foreground focus. If wParam is TRUE then
// for both cases the window will be forced into the foreground focus
if (uMsg == m_ShowStageMessage) {
    BOOL bVisible = IsWindowVisible(hwnd);
    SetWindowPos(hwnd, HWND_TOP, 0, 0, 0, 0,
                    SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW |
                    (bVisible ? SWP_NOACTIVATE : 0));
    // Should we bring the window to the foreground
    if (wParam == TRUE) {
        SetForegroundWindow(hwnd);
    }
    return (LRESULT) 1;
}

요구 사항

요구 사항 가치
지원되는 최소 클라이언트 Windows 2000 Professional [데스크톱 앱만 해당]
지원되는 최소 서버 Windows 2000 Server [데스크톱 앱만 해당]
대상 플랫폼 윈도우즈
Header winuser.h(Windows.h 포함)
Library User32.lib
DLL User32.dll
API 집합 ext-ms-win-ntuser-window-l1-1-0(Windows 8에서 도입)

참고하십시오

AllowSetForegroundWindow

개념적

FlashWindowEx

GetForegroundWindow

LockSetForegroundWindow

참조

SetActiveWindow

Windows