Reduire des fenetres dans la barre de taches en vb.net

Contenu du snippet

A compiler dans une application "console".
A partir les arguments passés en ligne de commande, les fenêtres, dont le titre contient l'un des arguments, sont réduites dans la barre de tâche.

Programme testé en VB2008 Express.
Il peut être compilé pour le Framework 2.0, 3.0 ou 3.5

Source / Exemple :


'===========================================================================================
'                               Projet : ReduitFenetre 
'                                Gis59 - 13/06/2008
'===========================================================================================
' Description : Réduction des fenetres passées en paramétre
' Paramtres   : Titres des fenetres
'===========================================================================================
' Modif       :
'===========================================================================================

Module Main

    Private Declare Function GetWindow Lib "user32" (ByVal hWnd As Integer, ByVal wCmd As Integer) As Integer
    Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Integer, ByVal lpString As String, ByVal cch As Integer) As Integer
    Private Declare Function IsWindowVisible Lib "user32" (ByVal hWnd As Integer) As Integer
    Private Declare Function GetDesktopWindow Lib "user32" () As Integer
    Public Declare Function CloseWindow Lib "user32" (ByVal hWnd As Integer) As Integer

    <VBFixedString(255)> Dim TitreFenetre As String

    Const GW_HWNDFIRST As Integer = 0
    Const GW_HWNDLAST As Integer = 1
    Const GW_HWNDNEXT As Integer = 2
    Const GW_HWNDPREV As Integer = 3
    Const GW_OWNER As Integer = 4
    Const GW_CHILD As Integer = 5

    Sub Main()
        Dim blnRet As Boolean = False
        'Test si "?" dans les arguments
        blnRet = TestSiHelp()
        'Cherche les fenetres et fait la réduction  si pas demande d'aide
        If Not blnRet Then Call ChercheEtReduit()

    End Sub

    '---------------------------------------------------------------------------------------
    ' Sub           : ChercheEtReduit
    ' Description   : Parcout la liste des fenêtres active et réduit les fenêtres dans le nom
    '                   contient un des strings passées en argument au programme.
    '---------------------------------------------------------------------------------------

    Sub ChercheEtReduit()
        Dim hWnd As Integer
        Dim argument As String
        Dim Titre As String
        Dim iNbCar As Integer

        'Recupere le Handle du bureau
        Dim hWndDesktop = GetDesktopWindow()
        'Recupere le Handle de la 1ere Fenetre fille
        hWnd = GetWindow(hWndDesktop, GW_CHILD)

        'Boucle sur toute les fenetres filles
        Do While (Not IsNothing(hWnd)) AndAlso (hWnd <> 0)
            'Lecture du titre
            TitreFenetre = New String(Chr(0), 255)
            iNbCar = GetWindowText(hWnd, TitreFenetre, 255)
            If iNbCar > 0 Then
                'If TitreFenetre <> New String(Chr(0), 255) Then
                If IsWindowVisible(hWnd) = 1 Then
                    Titre = Microsoft.VisualBasic.Left(TitreFenetre, iNbCar)
                    'Parcourt les argument pour chercher une concordance avce le titre
                    For Each argument In My.Application.CommandLineArgs
                        If Titre.ToUpper.Contains(argument.ToUpper) Then
                            Console.WriteLine("Fenetre à réduire : " & Titre.ToString)
                            'Réduit la fenetre si concordance
                            CloseWindow(hWnd)
                        End If
                    Next
                End If
            End If
            'Recupere le Handle de la Fenetre fille suivante
            hWnd = GetWindow(hWnd, GW_HWNDNEXT)
        Loop
    End Sub

    '---------------------------------------------------------------------------------------
    ' Function      : TestSiHelp
    ' Description   : Si un des arguments contient "?", affichage de l'aide
    ' Retour        : True si demande d'aide, sinon false                  
    '---------------------------------------------------------------------------------------
    Function TestSiHelp() As Boolean
        Dim blnDemandeHelp As Boolean = False
        Dim argument As String

        If My.Application.CommandLineArgs.Count = 0 Then
            blnDemandeHelp = True
        Else
            'Parcoutr les Arguments pour recherche "?"
            For Each argument In My.Application.CommandLineArgs
                If argument.Contains("?") Then
                    blnDemandeHelp = True
                    Exit For
                End If
            Next
        End If

        'Affiche l'aide
        If blnDemandeHelp Then
            Console.WriteLine("")
            Console.WriteLine("=======================================================================")
            Console.WriteLine("                     ReduitFenetre.exe")
            Console.WriteLine("=======================================================================")
            Console.WriteLine("Decription : Réduit dans la barre de tache")
            Console.WriteLine("             les fenetres passées en argument.")
            Console.WriteLine("")
            Console.WriteLine("Syntaxe : ReduitFenetre.exe arg1 [arg2 .... argx] ")
            Console.WriteLine("   arg1 à argx : titre (ou partie du titre) des fenetres a reduire.")
            Console.WriteLine("")
            Console.WriteLine("Exemple : ReduitFenetre.exe ""cmd.exe""")
            Console.WriteLine("  --> Reduction de toutes les fenetres dant le titre contient cmd.exe")
            Console.WriteLine("")

        End If

        TestSiHelp = blnDemandeHelp
    End Function

End Module

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.