[VBA] Cacher barre des tâches pour appli plein écran

Décembre 2016


Cette démo est surtout utile quand l'écran n'est pas de grande dimension, elle permet l'affichage de l'appli sur toute la surface de l'écran en « cachant » la barre des tâches.

Si votre application n'est utilisée que sur votre PC et que votre barre des tâches est paramétrée pour être « rétractible », cette démo ne vous est pas nécessaire.

Cette démo est agencée en « bascule » de telle façon qu'un seul bouton ou raccourci clavier est nécessaire pour fonctionner.

Dans un module général


'************************* 
'***    Lermite      ****** 
'***  06/03/2010  ****** 
'************************* 
Option Explicit 
Public Bascule As Boolean 

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long 
Private Declare Function GetWindowPlacement Lib "user32" (ByVal hwnd As Long, lpwndpl As WINDOWPLACEMENT) As Long 
Public Declare Function SHAppBarMessage Lib "shell32.dll" (ByVal dwMessage As Long, pData As AppBarData) As Long 
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As _ 
    Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long 



Private Type POINTAPI 
        X As Long 
        Y As Long 
End Type 
Private Type RECT 
        Left As Long 
        Top As Long 
        Right As Long 
        Bottom As Long 
End Type 
Public Type AppBarData 
        cbSize As Long 
        hwnd As Long 
        uCallbackMessage As Long 
        uEdge As Long 
        rc As RECT 
        lParam As Long 
End Type 
Private Type WINDOWPLACEMENT 
        Length As Long 
        FLAGS As Long 
        showCmd As Long 
        ptMinPosition As POINTAPI 
        ptMaxPosition As POINTAPI 
        rcNormalPosition As RECT 
End Type 
Public WinPlacement As WINDOWPLACEMENT 

Public Const ABS_ALWAYSONTOP = &H2 
Public Const ABS_AUTOHIDE = &H1 
Public Const ABM_GETSTATE = &H4 
Public Const ABM_SETSTATE = &HA 

' Trouver le hwnd de la barre des tâches 
Private Function GetHwndBT() As Long 
    GetHwndBT = FindWindow("shell_traywnd", "") 
End Function 

Private Function BarData() As Integer 
    Dim BarDt As AppBarData 
    BarData = SHAppBarMessage(ABM_GETSTATE, BarDt) 
End Function 

'Retourne true si la barre des tâches est rétractible 
Public Function BarMode() As Boolean 
Dim ret As Integer 
    ret = BarData() 
    BarMode = (ret = ABS_AUTOHIDE + ABS_ALWAYSONTOP Or ret = ABS_AUTOHIDE) 
End Function 

'Applique les propriétés à la barre des taches 
'Mode = 0 : voir la barre des tâche 
'Mode = 1 : cache la barre des tâches 
Public Sub ChangeTaskBar(Mode As Long) 
Dim BarDt As AppBarData 
Dim ret As Long 

    'Entrée des paramètres 
   BarDt.cbSize = Len(BarDt) 
    BarDt.hwnd = GetHwndBT 
    BarDt.lParam = Mode 
    'Applique 
   ret = SHAppBarMessage(ABM_SETSTATE, BarDt) 

If ret = 0 Then 
    Call MsgBox("erreur lors de l'appel de SHAppBarMessage", vbCritical + vbOKOnly, "Erreur") 
End If 
End Sub 

Sub MaximizeAppli() 
Static a As Boolean 
Static Changer As Integer 
    If Changer = 0 Then 
        'Voir si la barre des tâches est rétractible 
       Changer = IIf(BarMode, 1, 2) 
    End If 
    a = Not a 
    If Changer = 2 Then 
        'la barre des tâches n'est pas rétractible, ont la retracte / Ressort 
       Call ChangeTaskBar(Abs(a)) 
    End If 
    'L'appli sera toujours maximizée plein écran. 
   Application.WindowState = IIf(a, xlMaximized, xlNormal) 
End Sub

Trois exemples pour employer la fonction.


1) Un raccourci clavier.
Dans le ruban, cliquez sur Macro, sélectionnez la macro MaximizeAppli
->> option et attribuez une lettre au raccourci.

2°) Un bouton formulaire sur un forme
Attribuez la fonction MaximizeAppli au bouton

3°) Avec un bouton sur un Userform
Attention, l'userForm doit être appeler avec Show 0
Dans le code du bouton de l'UserForm
Private Sub CommandButton1_Click() 
    MaximizeAppli 
Dim T, L 
    'Exemple pour positionner le bouton aux environs des boutons système de l'appli. 
   L = Application.Left + Application.Width - UFbouton.Width - 60 
    T = Application.Top + 2 
    Me.Move L, T, 40, 14 ' à adapter 
End Sub

Vous pouvez télécharger une classeur démo qui reprend les trois solutions d'appel.
Note : les fonctions OterCadreUF et transparence appliquées à L'UserFom ne sont là que pour la démo et ne sont pas indispensables.

Téléchargement du classeur démo

A voir également :

Ce document intitulé «  [VBA] Cacher barre des tâches pour appli plein écran  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.