기타 [vb.net] Form 전체화면 실행 시 Window작업표시줄 숨기는방법
페이지 정보

본문
주어진 코드는 윈도우 폼을 사용하여 사용자 지정 닫기 버튼이 있는 풀스크린 애플리케이션을 만드는 예시입니다.

Imports System.Runtime.InteropServices
Public Class fMain
    ' 윈도우 API 함수 선언
    <DllImport("user32.dll")>
    Private Shared Function FindWindow(lpClassName As String, lpWindowName As String) As IntPtr
    End Function
    <DllImport("user32.dll", SetLastError:=True)>
    Private Shared Function SetWindowPos(ByVal hWnd As IntPtr, ByVal hWndInsertAfter As IntPtr, ByVal X As Integer, ByVal Y As Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal uFlags As SetWindowPosFlags) As Boolean
    End Function
    ' SetWindowPos 함수의 플래그 열거형
    <Flags>
    Private Enum SetWindowPosFlags As UInteger
        SynchronousWindowPosition = &H4000
        DeferErase = &H2000
        DrawFrame = &H20
        FrameChanged = &H20
        HideWindow = &H80
        DoNotActivate = &H10
        DoNotCopyBits = &H100
        IgnoreMove = &H2
        DoNotChangeOwnerZOrder = &H200
        DoNotRedraw = &H8
        DoNotReposition = &H200
        DoNotSendChangingEvent = &H400
        IgnoreResize = &H1
        IgnoreZOrder = &H4
        ShowWindow = &H40
    End Enum
    ' 사용자 지정 닫기 버튼 PictureBox
    Private cmd_close As PictureBox
    ' 폼이 로드될 때 발생하는 이벤트 처리기
    Private Sub fMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ' 사용자 지정 닫기 버튼 생성
        cmd_close = New PictureBox
        cmd_close.Image = My.Resources.ResourceManager.GetObject("close") ' 리소스에서 이미지 가져오기
        cmd_close.Size = New Size(17, 17) ' 크기 설정
        cmd_close.SizeMode = PictureBoxSizeMode.Zoom ' 이미지 크기 조정 방법 설정
        Me.Controls.Add(cmd_close) ' 폼에 PictureBox 추가
        ' 사용자 지정 닫기 버튼 클릭 이벤트 핸들러 추가
        AddHandler cmd_close.Click, Sub(xs As Object, xe As EventArgs)
                                        Application.Exit() ' 애플리케이션 종료
                                    End Sub
        ' 폼 설정
        Me.FormBorderStyle = FormBorderStyle.None ' 테두리 스타일 없음
        Dim window As IntPtr = FindWindow("Shell_traywnd", "") ' 작업 표시줄 찾기
        SetWindowPos(window, IntPtr.Zero, 0, 0, 0, 0, SetWindowPosFlags.HideWindow) ' 작업 표시줄 숨기기
        Me.WindowState = FormWindowState.Maximized ' 최대화
        Me.TopMost = True ' 항상 위에 표시
    End Sub
    ' 폼이 Dispose될 때 발생하는 이벤트 처리기
    Private Sub MyBase_Disposed(sender As Object, e As EventArgs) Handles Me.Disposed
        Dim window As IntPtr = FindWindow("Shell_traywnd", "") ' 작업 표시줄 찾기
        SetWindowPos(window, IntPtr.Zero, 0, 0, 0, 0, SetWindowPosFlags.ShowWindow) ' 작업 표시줄 다시 표시
    End Sub
    ' 폼 크기 조정 이벤트 처리기
    Private Sub fMain_Resize(sender As Object, e As EventArgs) Handles Me.Resize
        Dim S As Size = Me.ClientRectangle.Size ' 클라이언트 영역 크기 가져오기
        If cmd_close IsNot Nothing Then cmd_close.Location = New Point(S.Width - cmd_close.Width - 15, 15) ' 사용자 지정 닫기 버튼 위치 설정
    End Sub
End Class
위 코드에서는 
FindWindow 및 SetWindowPos와 같은 윈도우 API 함수를 사용하여 작업 표시줄을 숨기거나 표시합니다. 사용자 지정 닫기 버튼을 클릭하면 애플리케이션이 종료됩니다. 폼이 로드되면 작업 표시줄이 숨겨지고, 폼이 닫힐 때 작업 표시줄이 다시 표시됩니다. 
사용자 지정 닫기 버튼은 폼의 우측 상단에 표시됩니다.
- 이전글[vb.net] Windows 시스템 오디오 볼륨 가져오기 및 설정 24.06.04
 - 다음글[VB.NET] 무명 함수(Anonymous Function), 람다 함수(Lambda Function): 코드 작성을 더욱 효율적으로 만드는 무기 24.05.08
 
댓글목록
등록된 댓글이 없습니다.



