Compter les fenetres

Aquhydro

XLDnaute Nouveau
Bonjour,

Je suis à la recherche d'un code pour compter les fenetre Windows (pas les fenetres excel) en VBA, et Staple1600 m'as trouvé cela, malheureusement, ça ne compte pas, mais ça liste, comment pourrais je le modifier pour qu'il les compte plutot que de les lister? En effet, mon but est de faire un code qui me permette d'énnoncer : Si il y à 7 fenetre, faire ça, si il y en a 8 faire ça, etc...

HTML:
Private Const GW_HWNDNEXT = 2
Private Declare Function GetWindow Lib "user32" (ByVal hWnd As Long, ByVal wCmd As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hWnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long

Sub ListWins(Optional Title = "*", Optional Class = "*")
    Dim hWndThis As Long
    hWndThis = FindWindow(vbNullString, vbNullString)
    While hWndThis
        Dim sTitle As String, sClass As String
        sTitle = Space$(255)
        sTitle = Left$(sTitle, GetWindowText(hWndThis, sTitle, Len(sTitle)))
        sClass = Space$(255)
        sClass = Left$(sClass, GetClassName(hWndThis, sClass, Len(sClass)))
        If sTitle Like Title And sClass Like Class Then
            Debug.Print sTitle, sClass
        End If
        hWndThis = GetWindow(hWndThis, GW_HWNDNEXT)
    Wend
End SubCode :
Sub test()
ListWins "*.xls"
End Sub



merci

Aquhydro.
 

pijaku

XLDnaute Occasionnel
Re : Compter les fenetres

Bonjour Aquhydro, le forum.

Dites moi cette question vous tarabuste pour que vous la posiez comme cela sur tous les forums...

J'ai essayé le code donné par Staple1600 (que je salue au passage), mais je n'ai pas du l'utiliser correctement car il me donne un mauvais résultat. Bon bref.
Il faut savoir ce que vous souhaitez. Le nombre de fenêtres ouvertes visibles? masquées? les deux?
[ce code vous donne les trois...]
Une petite recherche sur Internet m'a permis de vous dénicher la perle rare :
Code:
Option Explicit
'sources : http://www.generation-nt.com/reponses/vba-avoir-liste-fenetre-windows-ouvertes-entraide-298662.html
Private Declare Function GetWindowTextLength Lib "user32.dll" Alias _
"GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Private Declare Function GetWindowText Lib "user32.dll" Alias _
"GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String _
, ByVal nMaxCount As Long) As Long
Private Declare Function EnumWindows Lib "user32.dll" _
(ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Private Declare Function IsWindowVisible Lib "user32" _
(ByVal hwnd As Long) As Long
Private x&, y&, z&

Private Function EnumWindowsProc&(ByVal hwnd&, ByVal lParam&)
Dim SLength&, Buffer As String, RetVal&
SLength = GetWindowTextLength(hwnd) + 1
If SLength > 1 Then
Buffer = Space(SLength)
RetVal = GetWindowText(hwnd, Buffer, SLength)
z = z + 1
If CBool(IsWindowVisible(hwnd)) = True Then x = x + 1
If CBool(IsWindowVisible(hwnd)) = False Then y = y + 1
End If
EnumWindowsProc = 1
End Function

Sub WinList()
x = 0
EnumWindows AddressOf EnumWindowsProc, 0
MsgBox "Vous avez : " & z & " fenêtres ouvertes, dont : " & Chr(10) & _
"- " & x & " visibles," & Chr(10) & "- " & y & " masquées."
End Sub
 

Aquhydro

XLDnaute Nouveau
Re : Compter les fenetres

Alors oui, en effet, cette question me tarabuste, et j'ai des raisons, il se trouve que je suis en stage, un stage plutot important sur un plan personnel et professionnel, et que j'ai fait fausse route pendant un moment car mal orienté à la base, donc j'ai maintenant plus que quelques semaines pour finir mon stage, et j'ai un rapport à rendre à la fin.
N'étant pas du genre à aimer rendre un rapport léger et sans consistance avec pour excuse "j'ai pas réussi", je suis donc à la recherche, comme tu l'as remarqué, intensive, de ce code.

Je ne vois pas le mal à ça.

Ensuite, encore une fois, c'est gentil pour ta réponse mais ça n'en est pas une, tu n'as peut etre pas lu, mais je recherche non pas a avoir un message qui me listerais mes fenetre, mais juste à compter celles ci pour pouvoir coder :
If "nombre de fenetre" > x Then
Code 1
ElseIf "nombre de fenetre < x then
Code 2.

Cordialement,
Merci,
Aquhydro.
 

MJ13

XLDnaute Barbatruc
Re : Compter le Nombre de Sessions Excel ouvertes

Bonjiour Aquihydro, Pikaju

Teste ce fichier sur un code de MichelXLD que je salue pour l'occasion :).

PS: Pourrais-tu modifier le titre sur ton premier post en l'éditant et en mettant Compter le Nombre de Sessions Excel ouvertes?
 

Pièces jointes

  • Compter_Nombre_Sessions_Excel_MJ.xls
    81.5 KB · Affichages: 60

pijaku

XLDnaute Occasionnel
Re : Compter le Nombre de Sessions Excel ouvertes

Salut MJ13, le forum

PS: Pourrais-tu modifier le titre sur ton premier post en l'éditant et en mettant Compter le Nombre de Sessions Excel ouvertes?
Ben non puisque la question est :
Je suis à la recherche d'un code pour compter les fenetre Windows (pas les fenetres excel) en VBA

Par conséquent, le titre et ma réponse sont cohérents.

Ensuite, pour parfaire mon code et l'adapter à la demande réelle :
mais je recherche non pas a avoir un message qui me listerais mes fenetre, mais juste à compter celles ci pour pouvoir coder :
If "nombre de fenetre" > x Then
Code 1
ElseIf "nombre de fenetre < x then
Code 2.
Voici :
VB:
Sub WinList()
x = 0
EnumWindows AddressOf EnumWindowsProc, 0
Select Case x
    Case 3
        'ICI le code si 3 fenêtres ouvertes ET visibles
     Case 4
        'ICI le code si 4 fenêtres ouvertes ET visibles
    'Etc
    'Etc....
    Case Else
        'ICI le traitement pour toutes les possibilités (si 18945 fenêtres ouvertes ET visibles)
        'important car évite bien des erreurs.
End Select
End Sub

Edition : mise en forme avec les balises QUOTE
 
Dernière édition:

MJ13

XLDnaute Barbatruc
Re : Compter les fenetres

Re

Ben non puisque la question est :
Je suis à la recherche d'un code pour compter les fenetre Windows (pas les fenetres excel) en VBA

Ah, oui, en effet, j'avais mal lu :eek:.

Bon, voici un fichier avec une synthèse :).
 

Pièces jointes

  • Compter_Nombre_Sessions_Excel_MJ_V2.xls
    129.5 KB · Affichages: 90

Staple1600

XLDnaute Barbatruc
Re : Compter les fenetres

Bonjour MJ13, le fil, le forum

MJ13
Merci d'avoir confirmé ce je disais dans le fil initial d'Aquhydro ;)
https://www.excel-downloads.com/thr...nombre-de-fenetre-active-dans-windows.190278/

Aquhydro:
Penses à rester dans le fil initial de tes prochaines questions.
C'est plus commode pour le suivi des questions ;)

PS: Merci aussi au passage à pijaku (salutations également, même si tu m'as[edition=[/COLOR]vais[/edition] zappé au [edition=[/COLOR]premier[/edition] passage ;) )
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 488
Messages
2 088 866
Membres
103 979
dernier inscrit
imed