Favicon

Window status control

Peponi1/14/20254m

C#
Win32user32.dllShowWindow

1. Introduction

Win32의 user32.dll을 이용하여 윈도우 상태를 조작할 수 있다. 다음은 코드를 이용해 Form 상태를 지정하는 예시이다.

2. Example

using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
 
namespace Win32Test
{
    public static class FormStatusHelper
    {
        [DllImport("user32.dll")]
        private static extern int ShowWindow(IntPtr hWnd, uint nCmdShow);
 
        private const uint SW_RESTORE = 0x09;
 
        public static int SetFormStatus(Form form, uint statusCode) => ShowWindow(form.Handle, statusCode);
 
        public static void RestoreFormStatus(Form form)
        {
            if (form.WindowState == FormWindowState.Minimized || form.WindowState == FormWindowState.Maximized)
            {
                ShowWindow(form.Handle, SW_RESTORE);
            }
        }
    }
}

3. nCmdShow 항목

의미
SW_HIDE
0
창을 숨기고 다른 창을 활성화합니다.
SW_SHOWNORMAL
SW_NORMAL
1
창을 활성화하고 표시합니다. 창을 최소화, 최대화 또는 정렬하면 시스템은 창을 원래 크기와 위치로 복원합니다. 애플리케이션은 창을 처음으로 표시할 때 이 플래그를 지정해야 합니다.
SW_SHOWMINIMIZED
2
창을 활성화하고 최소화된 창으로 표시합니다.
SW_SHOWMAXIMIZED
SW_MAXIMIZE
3
창을 활성화하고 최대화된 창으로 표시합니다.
SW_SHOWNOACTIVATE
4
창의 최근 크기와 위치를 표시합니다. 이 값은 창이 활성화되지 않았다는 점을 제외하고 SW_SHOWNORMAL 비슷합니다.
SW_SHOW
5
창을 활성화하고 현재 크기와 위치에 표시합니다.
SW_MINIMIZE
6
지정된 창을 최소화하고 Z 순서로 다음 최상위 창을 활성화합니다.
SW_SHOWMINNOACTIVE
7
창을 최소화된 창으로 표시합니다. 이 값은 창이 활성화되지 않은 경우를 제외하고 SW_SHOWMINIMIZED 비슷합니다.
SW_SHOWNA
8
창을 현재 크기와 위치로 표시합니다. 이 값은 창이 활성화되지 않았다는 점을 제외하고 SW_SHOW 비슷합니다.
SW_RESTORE
9
창을 활성화하고 표시합니다. 창을 최소화, 최대화 또는 정렬하면 시스템은 창을 원래 크기와 위치로 복원합니다. 애플리케이션은 최소화된 창을 복원할 때 이 플래그를 지정해야 합니다.
SW_SHOWDEFAULT
10
애플리케이션을 시작한 프로그램에서 CreateProcess 함수에 전달된 STARTUPINFO 구조체에 지정된 SW_ 값을 기반으로 표시 상태를 설정합니다.
SW_FORCEMINIMIZE
11
창을 소유하는 스레드가 응답하지 않더라도 창을 최소화합니다. 이 플래그는 다른 스레드에서 창을 최소화할 때만 사용해야 합니다.

4. 참조 자료