--- Soumis par Dev Ashish---
Trouver le nom de la classe Windows d'une application amorcée.
(Q) Comment retrouver le nom de la classe Windows d'une application
déjà en cours d'exécution?
(A) Copier-coller le code suivant dans un nouveau module, puis exécuter
la fonction fEnumWindows depuis la fenêtre d'exécution immédiate (Debug Window). La
fonction imprime le nom de la classe et le titre de sa fenêtre principale pour toutes les
applications actuellement visibles.
'************** Code Start *************** Private Declare Function apiGetClassName Lib "user32" Alias _ "GetClassNameA" (ByVal Hwnd As Long, _ ByVal lpClassname As String, _ ByVal nMaxCount As Long) As Long Private Declare Function apiGetDesktopWindow Lib "user32" Alias _ "GetDesktopWindow" () As Long Private Declare Function apiGetWindow Lib "user32" Alias _ "GetWindow" (ByVal Hwnd As Long, _ ByVal wCmd As Long) As Long Private Declare Function apiGetWindowLong Lib "user32" Alias _ "GetWindowLongA" (ByVal Hwnd As Long, ByVal _ nIndex As Long) As Long Private Declare Function apiGetWindowText Lib "user32" Alias _ "GetWindowTextA" (ByVal Hwnd As Long, ByVal _ lpString As String, ByVal aint As Long) As Long Private Const mcGWCHILD = 5 Private Const mcGWHWNDNEXT = 2 Private Const mcGWLSTYLE = (-16) Private Const mcWSVISIBLE = &H10000000 Private Const mconMAXLEN = 255 Function fEnumWindows() Dim lngx As Long, lngLen As Long Dim lngStyle As Long, strCaption As String lngx = apiGetDesktopWindow() 'Recherche le premier rejeton du Bureau (Desktop) lngx = apiGetWindow(lngx, mcGWCHILD) Do While Not lngx = 0 strCaption = fGetCaption(lngx) If Len(strCaption) > 0 Then lngStyle = apiGetWindowLong(lngx, mcGWLSTYLE) 'Énumérer les fenêtres visibles seulement If lngStyle And mcWSVISIBLE Then Debug.Print "Class = " & fGetClassName(lngx), Debug.Print "Caption = " & fGetCaption(lngx) End If End If lngx = apiGetWindow(lngx, mcGWHWNDNEXT) Loop End Function Private Function fGetClassName(Hwnd As Long) Dim strBuffer As String Dim intCount As Integer strBuffer = String$(mconMAXLEN - 1, 0) intCount = apiGetClassName(Hwnd, strBuffer, mconMAXLEN) If intCount > 0 Then fGetClassName = Left$(strBuffer, intCount) End If End Function Private Function fGetCaption(Hwnd As Long) Dim strBuffer As String Dim intCount As Integer strBuffer = String$(mconMAXLEN - 1, 0) intCount = apiGetWindowText(Hwnd, strBuffer, mconMAXLEN) If intCount > 0 Then fGetCaption = Left$(strBuffer, intCount) End If End Function '************** Code End ***************