Voici un petit exemple vite fait ...
toute les 15 secondes, il va écrire dans la "GUI" à savoir dans l'edit, le nom des fenêtres "visible"
un grand bouton clear, pour vider l'edit.
Cliquez pour révéler
Cliquez pour masquer
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
Global $Form1_1 = GUICreate("Panda Gui", 626, 446, 192, 124)
Global $Edit1 = GUICtrlCreateEdit("", 16, 40, 305, 385)
Global $Label1 = GUICtrlCreateLabel("EDIT TEST PANDA", 112, 8, 100, 17)
Global $Button1 = GUICtrlCreateButton("Clear", 360, 40, 209, 377, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Local $t0 = TimerInit()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
GUICtrlSetData($Edit1,"")
EndSwitch
If TimerDiff($t0) >= 15000 then
GUICtrlSetData($Edit1,GUICtrlRead($Edit1)&"======================="& _
@CRLF&"["&@HOUR&":"&@MIN&":"&@SEC&"]"&" : "&_Desktop_Fenetre())
$t0=TimerInit()
EndIf
WEnd
Func _Desktop_Fenetre()
Local $aRet=""
Local $var = WinList()
For $i = 1 to $var[0][0]
If $var[$i][0] <> "" AND IsVisible($var[$i][1]) Then
$aRet &= $var[$i][0]&@CRLF
EndIf
Next
Return $aRet
EndFunc
Func IsVisible($handle)
If BitAnd( WinGetState($handle), 2 ) Then
Return 1
Else
Return 0
EndIf
EndFunc