선언:

C#

[DllImport("user32")]
public static extern Boolean ShowWindow(IntPtr hWnd, Int32 nCmdShow);


VB.NET

<DllImport("user32")> _
Public Shared Function ShowWindow(hWnd As IntPtr, nCmdShow As Int32) As [Boolean]
End Function




사용 예제:

C#

using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Threading;

namespace ApiReference {
    class ApiExample {
        public enum CmdShow {
            Hide,
            Normal,
            Minimized,
            Maximized,
            NoActivate,
            Show,
            Minimize,
            MinimizeNoActive,
            NA,
            Restore,
            Default,
            ForceMinimize
        }
        
        [DllImport("user32")]
        public static extern IntPtr FindWindow(String lpClassName, String lpWindowName);
        [DllImport("user32")]
        public static extern Boolean ShowWindow(IntPtr hWnd, Int32 nCmdShow);
        
        public static void Main(string[] args) {
            IntPtr hNotepad = FindWindow("Notepad", null);
            
            if ( hNotepad != IntPtr.Zero ) {
                // 모든 값을 다 한번씩 돌려봅시다.
                for ( Int32 i = 0; i <= 11; i++ ) {
                    Console.WriteLine("표시 상태: {0}", ((CmdShow) i).ToString());
                    ShowWindow(hNotepad, i);
                    Thread.Sleep(2000);
                }
            } else
                Console.WriteLine("메모장이 없습니다.");
            
            Console.ReadKey(true);
        }
    }
}


VB.NET

Imports System
Imports System.Diagnostics
Imports System.Runtime.InteropServices
Imports System.Threading

Namespace ApiReference
    Class ApiExample
        Public Enum CmdShow
            Hide
            Normal
            Minimized
            Maximized
            NoActivate
            Show
            Minimize
            MinimizeNoActive
            NA
            Restore
            [Default]
            ForceMinimize
        End Enum

        <DllImport("user32")> _
        Public Shared Function FindWindow(lpClassName As [String], lpWindowName As [String]) As IntPtr
        End Function
        <DllImport("user32")> _
        Public Shared Function ShowWindow(hWnd As IntPtr, nCmdShow As Int32) As [Boolean]
        End Function

        Public Shared Sub Main(args As String())
            Dim hNotepad As IntPtr = FindWindow("Notepad", Nothing)

            If hNotepad <> IntPtr.Zero Then
                ' 모든 값을 다 한번씩 돌려봅시다.
                For i As Int32 = 0 To 11
                    Console.WriteLine("표시 상태: {0}", CType(i, CmdShow).ToString())
                    ShowWindow(hNotepad, i)
                    Thread.Sleep(2000)
                Next
            Else
                Console.WriteLine("메모장이 없습니다.")
            End If

            Console.ReadKey(True)
        End Sub
    End Class
End Namespace




예제 실행 결과:




매개 변수 설명:

hWnd - 표시 상태를 설정할 윈도우의 핸들을 입력합니다.

nCmdShow - 표시 상태를 입력합니다.




API 설명:

윈도우의 표시 상태를 설정합니다.




참고:

ShowWindow (MSDN)




요구 사항:

클라이언트: Windows 2000 Professional+

서버: Windows 2000 Server+




비고:

IsWindowVisible API를 이용하여 윈도우가 숨겨져 있는지 아닌지의 여부를 알아낼 수 있습니다.

Hide 로 숨겨버린 윈도우는 EnumWindows 또는 FindWindow 로 다시 찾을 수 있습니다.

(하지만 WindowFromPoint 같은 API로는 찾아낼 수 없습니다. 보이지 않기 때문입니다)



'API Reference' 카테고리의 다른 글

56. CreateFile  (2) 2015.09.14
55. AccessMask  (0) 2015.09.13
53. FindWindow  (1) 2015.01.04
52. CommandLineToArgvW  (0) 2014.12.17
51. GetProcessMemoryInfo  (0) 2014.12.12

+ Recent posts