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.
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.