Listers les handles des fenêtres ouvertes [Résolu]

fg85 370 Messages postés dimanche 28 mars 2004Date d'inscription 13 avril 2007 Dernière intervention - 25 oct. 2005 à 21:13 - Dernière réponse : fg85 370 Messages postés dimanche 28 mars 2004Date d'inscription 13 avril 2007 Dernière intervention
- 30 oct. 2005 à 12:04
Bonjour,



Je souhaiterai lister (dans une listbox), le titre des fenêtres
actives, avec comme valeur pour chaque ligne le handle de la fenêtre.



Ce qui devrait donner quelque chose comme cela dans la listbox :



-----------------------------

mon application (valeur handle : 10589)

www.google.fr - Mozilla firefox (valeur handle : 984354)

Dossier test ( valeur handle : 9846519874)

-----------------------------


S'il serai possible de faire simple je vous en serai grandement reconnaissant.



Merci d'avance pour vos réponses .



---------------------------------------
Afficher la suite 

6 réponses

Meilleure réponse
nhervagault 6069 Messages postés dimanche 13 avril 2003Date d'inscription 15 juillet 2011 Dernière intervention - 25 oct. 2005 à 21:56
3
Merci
Salut

Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal
lpClassName As String, ByVal lpWindowName As String) As Long
Declare Function BringWindowToTop Lib "user32" (ByVal hwnd As Long) As Long
dans un bouton :
Private Sub Command1_Click()
Dim hNoteWnd As Long
Dim x As Long
hNoteWnd = FindWindow("Notepad", "Sans titre - Bloc-notes")
If hNoteWnd = 0 Then
'le notepad avec le titre "Sans titre - Bloc-notes" n'est pas en mémoire
x =Shell("notepad.EXE", vbNormalFocus)
Else
'il est en mémoire : on le force en avant plan
BringWindowToTop (hNoteWnd)
End If
End Sub


Sinon, tu peux utiliser GetWindow pour obtenir la liste de toutes les
fenêtres actives :


dans un module basique :
Public Const GW_HWNDFIRST = 0
Public Const GW_HWNDNEXT = 2
Declare Function GetWindow Lib "user32" Alias "GetWindow" (ByVal hwnd As
Long, ByVal wCmd As Long) As Long
Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal
hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long


dans un bouton :
Private Sub Command1_Click()
Dim hWndNext As Long
Dim x As Long
Dim lpString As String * 255
Dim vLen As Long


hWndNext = GetWindow(hWnd, GW_HWNDFIRST)
If hWndNext <> 0 Then
vLen = GetWindowText (hWndNext , lpString , len(lpString ))
Debug.print Left(lpString ,vLen )
End If
do until hWndNext = 0
hWndNext = GetWindow(hWndNext, GW_HWNDNEXT)
vLen = GetWindowText (hWndNext , lpString , len(lpString ))
Debug.print Left(lpString ,vLen )
loop
End Sub

Voila un petit debut
APres a toi faire la suite.

Merci nhervagault 3

codes-sources a aidé 82 internautes ce mois-ci

Meilleure réponse
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 27 oct. 2005 à 18:43
3
Merci
Au risque de me répéter : Voir ma source nommée Anti-pub : elle fait ce que tu demande !

_____________________________________________________________________
DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) tout en français : www.ProgOtoP.com/popapi/

Merci cs_DARKSIDIOUS 3

codes-sources a aidé 82 internautes ce mois-ci

Meilleure réponse
fg85 370 Messages postés dimanche 28 mars 2004Date d'inscription 13 avril 2007 Dernière intervention - 30 oct. 2005 à 12:04
3
Merci
Ben en faite, DarK Sidious, en cherchant dans ta source et en supprimer l'optionnel de l'essentiel, sa fonctione très bien.



Merci beaucou à toi DarK Sidious et à [auteurdetail.aspx?ID=84425 nhervagault], en compilant vos codes, j'ai réussi à créer ce que je voulais. Merci

Merci fg85 3

codes-sources a aidé 82 internautes ce mois-ci

cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 26 oct. 2005 à 06:41
0
Merci
Voir ma source nommée Anti-Pub

_____________________________________________________________________
DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) tout en français : www.ProgOtoP.com/popapi/
fg85 370 Messages postés dimanche 28 mars 2004Date d'inscription 13 avril 2007 Dernière intervention - 27 oct. 2005 à 15:45
0
Merci
Bon j'ai modifié le code comme ceci :

Private Sub Command1_Click()

Dim hWndNext As Long

Dim x As Long

Dim lpString As String * 255

Dim vLen As Long

Dim txt As String



hWndNext = GetWindow(hwnd, GW_HWNDFIRST)

If hWndNext <> 0 Then

vLen = GetWindowText(hWndNext, lpString, Len(lpString))



txt = Left(lpString, vLen)

If txt = "" Then

Else

List1.AddItem txt, 0

End If



End If

Do Until hWndNext = 0

hWndNext = GetWindow(hWndNext, GW_HWNDNEXT)

vLen = GetWindowText(hWndNext, lpString, Len(lpString))

txt = Left(lpString, vLen)

If txt = "" Then

Else

List1.AddItem txt, 0

End If

Loop

End Sub


Maintenant le problème, est que ce code m'affiche une liste avec
plein d'autre chose autre que des fenêtres, or je souhaiterai juste
lister les fenêtres actives. Comment est-ce possible ?



PS : Par fenêtre active, j'entend les fenêtres qu'on peut accéder par la barre de tâches.



-------------------------------
fg85 370 Messages postés dimanche 28 mars 2004Date d'inscription 13 avril 2007 Dernière intervention - 27 oct. 2005 à 19:11
0
Merci
Oui mais je souhaiterai un exemple concret, je débute et je ne comprend rien à votre source :(.

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.