Je l'ai complété:
Exécuter le programme avec le débugger, et ensuite lancer un autre programme , son titre et son handle apparaîtront dans le débugger.
Suivant le programme, plusieurs fenêtres peuvent surgir.
En ce qui me concerne, à chaque fois que je lance un programme, j'ai une fenêtre "program manager" qui apparaît. ???
Code : Tout sélectionner
Enumeration
#Window_0
EndEnumeration
Enumeration
#ListIcon_0
EndEnumeration
Dim WindowName.s(200)
Dim WindowNamecompare.s(200)
Dim resultatcompare.s(200)
Dim WindowClass.s (200)
Dim hwndfenetre.l (200)
For a=0 To 199
WindowName(a)=Space(200)
WindowNamecompare(a)=Space(200)
resultatcompare(a)=Space(200)
WindowClass(a)=Space(200)
Next a
Global compt.l,nombre.l
Procedure compare()
For a=0 To nombre-1
For b=0 To nombre-1
If WindowName(a)=WindowNamecompare(b)
resultatcompare(a)=""
EndIf
Next b
Next a
For a=0 To nombre-1
If resultatcompare(a)<>""
Debug "Titre: "+resultatcompare(a)+" Handle: "+Str(hwndfenetre(a))
EndIf
Next
For a=0 To 199
WindowNamecompare(a)=WindowName(a)
Next a
EndProcedure
Procedure ProcedureEnum(Window.l , lParam.l)
GetWindowText_(Window,@WindowName(compt),200)
GetClassName_(Window,@WindowClass(compt),200)
Getwindowrect_(Window,@dimension.RECT)
hwndfenetre(compt)=FindWindow_(WindowClass(compt),WindowName(compt))
If WindowName(compt)<>"" :;pour afficher que les fenetres qui portent un nom
If IsWindowVisible_(hwndfenetre(compt)) :;seulement les fenêtres visibles
AddGadgetItem(#ListIcon_0, compt, WindowName(compt)+Chr(10)+Str(hwndfenetre(compt))+Chr(10)+Str(dimension\right-dimension\left)+"/"+Str(dimension\bottom-dimension\Top)+Chr(10)+WindowClass(compt))
resultatcompare(compt)= WindowName(compt)
compt=compt+1
EndIf
EndIf
ProcedureReturn 1
EndProcedure
Procedure timerProcedure(WindowID, Message, wParam, lParam)
Resultat.l = #PB_ProcessPureBasicEvents
Select Message
Case #wm_timer
compt=0
ClearGadgetItemList(0)
CallFunction(0,"EnumWindows",@ProcedureEnum(),lParam)
nombre = CountGadgetItems(#ListIcon_0)
compare()
;Debug nombre
EndSelect
ProcedureReturn Resultat
EndProcedure
If OpenWindow(#Window_0, 200, 160, 620, 450, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Listing")
If CreateGadgetList(WindowID())
ListIconGadget(#ListIcon_0, 10, 10, 600, 400, "Nom", 200, #PB_ListIcon_GridLines)
AddGadgetColumn(#ListIcon_0, 2, "Handle", 100)
AddGadgetColumn(#ListIcon_0, 3, "Long/Larg", 100)
AddGadgetColumn(#ListIcon_0, 4, "Class", 200)
EndIf
EndIf
OpenLibrary(0,"user32.dll")
CallFunction(0,"EnumWindows",@ProcedureEnum(),0)
For a=0 To 199
WindowNamecompare(a)=WindowName(a)
Next a
settimer_( WindowID(),1,2000,0)
SetWindowCallback(@timerProcedure())
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_EventCloseWindow
killtimer_(WindowID(),1)
quit.l=1
EndSelect
Until quit=1