VB.NET-取消任务栏窗口全屏

Public Class FMain
'定义窗体变量
    Private fullnow As Boolean = False'标记当前窗体是否为全屏状态
    Private rect As New Rectangle'保存的全屏前的装提,退出全屏时恢复到此状况

'全屏切换
 Private Sub ChangeFullScreen()
        fullnow = Not fullnow
        Me.WindowState = FormWindowState.Normal'这一句是我自己加的,全屏最大化前恢复到默认状态(可能与我用的用户界面有关,不写也可以)
        SetFullScreen(fullnow, rect)
        If fullnow Then
            Me.FormBorderStyle = FormBorderStyle.None
            'Me.ControlBox = False'还是与我用的界面控件有关
            Me.WindowState = FormWindowState.Maximized
            'notify.ShowBalloonTip(2000, "注意", "应用正在以全屏模式运行。", ToolTipIcon.Info)
        Else
            Me.FormBorderStyle = FormBorderStyle.Sizable
            'Me.ControlBox = True
            Me.WindowState = FormWindowState.Normal
        End If

    End Sub

'调用全屏切换

'.......代码略去


'当窗体退出时检查全屏状态,如果是全屏则恢复(主要是任务栏)
  Private Sub FMain_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
        If fullnow Then
            SetFullScreen(False, rect)
        End If
    End Sub
End Class

首先引用API,最好写到一个模块里,这样可以全局调用



Module FullScreen
    Public Declare Auto Function FindWindow Lib "user32.dll" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
    Public Declare Auto Function ShowWindow Lib "user32.dll" (ByVal hwnd As Integer, ByVal nCmdShow As Integer) As Integer
    Public Declare Auto Function SystemParametersInfo Lib "user32.dll" (ByVal uAction As Integer, ByVal uParam As Integer, ByRef lpvParam As Rectangle, ByVal fuWinIni As Integer) As Integer
    Public Const SPIF_UPDATEINIFILE As Integer = &H1
    Public Const SPI_SETWORKAREA As Integer = 47
    Public Const SPI_GETWORKAREA As Integer = 48
    Public Const SW_SHOW As Integer = 5
    Public Const SW_HIDE As Integer = 0
    Public Function SetFullScreen(ByVal fullscreen As Boolean, ByRef rectOld As Rectangle) As Boolean
        Dim Hwnd As Integer = FindWindow("Shell_TrayWnd", Nothing)
        If Hwnd = 0 Then
            Return False
        End If
        If fullscreen Then
            ShowWindow(Hwnd, SW_HIDE)
            Dim rectFull As Rectangle = Screen.PrimaryScreen.Bounds
            SystemParametersInfo(SPI_GETWORKAREA, 0, rectOld, SPIF_UPDATEINIFILE) 'Get
            SystemParametersInfo(SPI_SETWORKAREA, 0, rectFull, SPIF_UPDATEINIFILE) 'Set
        Else
            ShowWindow(Hwnd, SW_SHOW)
            SystemParametersInfo(SPI_SETWORKAREA, 0, rectOld, SPIF_UPDATEINIFILE)
        End If
        Return True
    End Function
End Module

窗口代码,相对比较简单


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值