Window status control
Peponi │ 1/14/2025 │ 4m
C#
Win32user32.dllShowWindow
Window status control
1/14/2025
4m
Peponi
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 | 창을 소유하는 스레드가 응답하지 않더라도 창을 최소화합니다. 이 플래그는 다른 스레드에서 창을 최소화할 때만 사용해야 합니다. |