Minwindow (gestionnaire de fenetre)

Description

Voici un programme que j’ai fait il y a quelque temps deja mais qui peu pourra surement depanner certain d’entre vous. Il permet lorsque vous minimiser une fenetre de la mettre automatiquement dans le systray. Il recupere automatiquement l’icône de l’application minimiser et sont titre, on y apprend aussi a lire et ecrire dans la base de registre et on retrouve aussi une classe pour gere facilement les icône dans le systray.

Voici les principale api utiliser :

EnumWindows
ShowWindow
SwitchToThisWindow
CloseWindow
SendMessage
GetWindow
GetWindowLong
GetWindowText
IsWindowVisible
IsIconic
SendMessageTimeout
GetClassLong

Pour finir j’utilise un module que j’aime particulierement pour animer mes fenetres : MovingEffects de MadM@tt (cf http://www.vbfrance.com/code.aspx?ID=24161)
Ainsi qu’un OCX pour rendre les menus plus attractif (XPMenu.ocx) mais celui ci je n’est plus le lien.

Source / Exemple :


'Extrait du Code Source

'Enumeration des fenêtres des applications actives (uniquement celles qui apparaissent dans la barre des taches)
Public Function EnumWindowCallBack(ByVal hwnd As Long, ByVal lParam As Long) As Long
 Dim lExStyle As Long, bHasNoOwner As Boolean
    
    If IsWindowVisible(hwnd) Then
        bHasNoOwner = (GetWindow(hwnd, GW_OWNER) = 0)
        lExStyle = GetWindowLong(hwnd, GWL_EXSTYLE)
        
        If (((lExStyle And WS_EX_TOOLWINDOW) = 0) And bHasNoOwner) Or _
           ((lExStyle And WS_EX_APPWINDOW) And Not bHasNoOwner) Then
            
            ReDim Preserve vWindow(NbrWindow)
                vWindow(NbrWindow).hwnd = hwnd
                vWindow(NbrWindow).Iconic = IsIconic(hwnd) 'On regarde si WindowState de la fenetre = 1
                vWindow(NbrWindow).Titre = GetCaption(hwnd)
                
            NbrWindow = NbrWindow + 1
        End If
    End If

    EnumWindowCallBack = True
End Function

'recuperation du titre de la fenêtre qui lui est passée en parametre
Private Function GetCaption(ByVal hwnd As Long) As String
 Dim mCaption As String, lReturn As Long
 
    mCaption = Space(255)
    lReturn = GetWindowText(hwnd, mCaption, 255)
    GetCaption = Left(mCaption, lReturn)
End Function

'Recuperation du handle de l'icone de la fenetre qui lui est passée en parametre
Public Function GetIcon(hwnd As Long) As Long
    Call SendMessageTimeout(hwnd, WM_GETICON, 0, 0, 0, 1000, GetIcon)
    If Not CBool(GetIcon) Then GetIcon = GetClassLong(hwnd, GCL_HICONSM)
    If Not CBool(GetIcon) Then Call SendMessageTimeout(hwnd, WM_GETICON, 1, 0, 0, 1000, GetIcon)
    If Not CBool(GetIcon) Then GetIcon = GetClassLong(hwnd, GCL_HICON)
    If Not CBool(GetIcon) Then Call SendMessageTimeout(hwnd, WM_QUERYDRAGICON, 0, 0, 0, 1000, GetIcon)
End Function

Conclusion :


Voilà donc il n’y a, a ma connaissance pas de bug mais bon si vous en trouver n’hesiter pas dite le.

Codes Sources

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.