Hit-Parade .VB Research Center . Compteur
Accueil ~  Code ~  Programmes ~  Api ~  Forum ~  Cours ~  Livres ~  Quiz ~  Annuaire
~ Edito ~
12/03/2006 @ 13:39
Depuis la dernière mise à jour (qui remonte à... oulala plusieurs mois), un petit ménage de printemps s'impose. Ca tombe bien, c'est presque la période.
Au menu, et progressivement sur les jours à venir, rafraîchissement de plusieurs fonctions et procédures, nouvelles APIs et nouveaux programmes.

~ Rechercher ~

  

~ Annuaire VB ~
 Rechercher un site :
  

~ Partenaires ~

Fonction EnumWindows

Declare Function EnumWindows Lib "user32" ( _
                 
ByVal lpEnumFunc As Long, _
                 ByVal lParam As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction énumère toutes les fenêtres principales de windows. Il faut utiliser une fonction de rappel (callback) pour pouvoir récupérer les valeurs.
lpEnumFunc est un pointeur vers la fonction de rappel (utilisation de AddressOf sous VB).
lParam est un paramêtre qui sera passé à la fonction de rappel.

La fonction de rappel reçoit deux paramêtres :
hWnd donne le handle d'une fenêtre (on peut alors utiliser par exemple GetWindowText pour récupérer le titre de la fenêtre).
lParam est la variable qui vient de EnumWindow.
Si tout s'est déroulé correctement la fonction retourne Vrai, sinon False.

Exemple d'utilisation :

' Déclaration des API utilisées
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" _
(
ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Public Declare Function
EnumWindows Lib "user32" _
(
ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long

' Variable temporaire utilisée uniquement par la fonction GetWindowsList
' pour stocker les fenêtres.
Public stGetWindowsList As String

' Exemple d'utilisation :
' Dim tabFenetre
' tabFenetre = GetWindowsList
Public Function GetWindowsList()
' Cette fonction retourne sous forme de tableau l'ensemble
' des titres des fenêtres de premier niveau ouvertes sous windows.
Dim lgRep As Long
stGetWindowsList = vbNullString
' Appel de l'API et envoi du pointeur vers notre fonction de rappel
lgRep = EnumWindows(AddressOf EnumWindowsProc, 0)
' Découpage de la chaîne pour retourner un tableau
GetWindowsList = Split(stGetWindowsList, vbCrLf)
End Function

' Déclaration de la fonction de rappel
Public Function EnumWindowsProc(ByVal lgHwnd As Long, ByVal lgParam As Long) As Long
Dim
stTmp As String, lgTmp As Long, lgRet As Long
stTmp = Space$(120)
lgTmp = 119
' On récupère le titre de la fenêtre à partir du handle
lgRet = GetWindowText(lgHwnd, stTmp, lgTmp)
stTmp = Replace(stTmp, Chr$(0), vbNullString)
' Stockage du résultat dans la chaine temporaire (ajout au texte existant).
' On pourrait imaginer construire une chaîne plus complexe en ajoutant également le handle
' de la fenêtre, ce qui permettrait des manipulations externes (comme une fermeture par exemple).
If (Trim$(stTmp) <> vbNullString) Then stGetWindowsList = stGetWindowsList & stTmp & vbCrLf
' Retourne 1 systématiquement
EnumWindowsProc = 1
End Function

Retour à la liste des API

Visual Basic Research Center - (c) 2000/2002 -  Webmaster : docvb (chez) free (point) fr