recupérer le nom des fenêtres

ThomasR

XLDnaute Occasionnel
Bonjour le forum,

j'utilise l'API

Code:
Private Declare Function CloseWindow Lib 'user32' (ByVal hwnd As Long) As Long
Private Sub Form_Load()
    'KPD-Team 2000
    'URL: [url]http://www.allapi.net/[/url]
    'E-Mail: [email]KPDTeam@Allapi.net[/email]
    'Minimize this Window
    CloseWindow Me.hwnd
End Sub

qui sert à minimiser une fenetre (le USF ou tout type de fenetre)

donc quand je connait le nom il n'y a pas de problème .

exemple

Code:
Private Sub CommandButton1_Click()

nom = FindWindow(vbNullString, 'Thomas')
CloseWindow nom
End Sub


Private Sub UserForm_Initialize()
Dim nom As Long
'Me.Left = 300
'Me.Top = 300
nom = FindWindow(vbNullString, 'thomas')
'AnimateWindow nom, 3000, AW_CENTER Or &H10000
Debug.Print AnimateWindow(nom, 2000, &H80000)  '&H80000)
End Sub
et dans un module

Code:
Public Declare Function FindWindow Lib 'user32' Alias 'FindWindowA' _
    (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function CloseWindow Lib 'user32' (ByVal hwnd As Long) As Long

dans ce cas la fenetre à comme caption Thomas dans ma macro je veux pouvoir lister le nom de toute mes fenetre afin de choisir celle que je souhaite réduire.

le problème majeur est que les fenetres ne sont pas forcément des USF mais d'autre soft ou meme l'explorer windows.

D'avance merci
 
M

Marc77

Guest
Bonsoir Thomas et le forum.

je ne s'ai pas si cette macro peut aidé elle récupère le nom des feuilles dans des cellules.

Sub Onglets()
Dim WS As Worksheet, Ligne As Integer
For Each WS In Workbooks('DiversVBA.xls').Worksheets
Ligne = Ligne + 1
Range('A' & Ligne) = WS.Name
Next
End Sub

A+ Marc
 

ThomasR

XLDnaute Occasionnel
Bonsoir Marc77, le forum,

Merci pour ta reponse.

en fait c'est un truck du genre que je recherche mais avec en declaration un dim variabe as object

qui dirait variable = fenetre

puis for each variable in windows

msgbox variable.caption

next

mon exemple est une vision simpliste de ce que je cherche

j'imagine qu'il doit y avoir des reference à activer et certaine api à utiliser pour capter toutes les fenetre active.

en tout cas merci pour ta reponse Marc77
 

Hellboy

XLDnaute Accro
re bonsoir Thomas

Est-ce que ceci peut t'aider ?
Private Declare Function GetDesktopWindow Lib 'user32' () As Long
Private Declare Function GetWindow Lib 'user32' (ByVal hwnd As Long, ByVal _
        wCmd
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
Private Const GW_CHILD = 5
Private Const GW_HWNDNEXT = 2

Private Sub Form_Load()
Dim dhwnd As Long, hwnd As Long, wc As Long, rval As Long
Dim wname As String, index As Long
dhwnd = GetDesktopWindow()
hwnd = GetWindow(dhwnd, GW_CHILD)
wc = 1: index = 0
Do While hwnd <> 0
&nbsp; &nbsp; wname = Space(260)
&nbsp; &nbsp; rval = GetWindowText(hwnd, wname, 260)
&nbsp; &nbsp; wname = Left(wname, InStr(wname, Chr(0)) - 1)
&nbsp; &nbsp;
If Len(wname) Then
&nbsp; &nbsp; &nbsp; &nbsp;
'MsgBox wname
&nbsp; &nbsp; &nbsp; &nbsp; List1.AddItem wname, index
&nbsp; &nbsp; &nbsp; &nbsp; index = index + 1
&nbsp; &nbsp;
End If
&nbsp; &nbsp; hwnd = GetWindow(hwnd, GW_HWNDNEXT)
Loop
Label1.Caption = 'Total number of
Open Windows = ' & index + 1
End Sub

a+
 

ThomasR

XLDnaute Occasionnel
re,

Merci Hellboy,
je vais essayer de transformer ce code en VBA mais c'est pas gagné car depuis que j'ai fait mon premier poste sur les API je n'ai réussi qu'a utiliser 3 API dont minimiser qui réside en 2 lignes de code.

Mais les défis c'est notre devise à tous ici :woohoo:

Merci

PS si tu t'interésse aux API aussi connais tu API-Guide .

c'est un soft gratuit qui explique des trucks sur les api avec des exemple mais c'est du VB donc ...

pour ce que ca intérésse .
 

Hellboy

XLDnaute Accro
re Thomas

Un super gros merci pour l'info. C'est sur que je vais regarder.

Le code que je t'ai envoyé, je ne l'ai pas utilisé, ou essayer.. Je l'ai pris d'un lien que je ne retouve pas. Mais si tu as des ennuis, je regarde ça avec toi volontier.

a demain !
 

Discussions similaires

Statistiques des forums

Discussions
312 338
Messages
2 087 403
Membres
103 536
dernier inscrit
komivi