_ProcessGetWindows

  • Hey,
    da ich gerade an meinem Taskmanager sitz hab ich gedacht ich veröffentlich mal ein Recht nützliche Funktion _ProcessGetWindows ($vProcess, $iFilterEmptyTitle = 0, $iWindowState = 0). Für $vProcess muss der Prozessname oder Pid angeben werden. Mit $iFilterEmptyTitle könnt ihr bestimmen das nur Title mit Text in die List kommen.
    $iWindowState ist ein von den Wertden von WinGetState, also zb 2 wenn du nur sichtbare Fenster in der Liste möchtest.

    Spoiler anzeigen
    [autoit]

    func _ProcessGetWindows ( $vProcess, $iFilterEmptyTitle = 0, $iWindowState = 0)
    Local $avWinlist = WinList (), $iCount = 0, $avWindows
    dim $avWindows[1][2]
    $iPid = ProcessExists ( $vProcess )

    if $iPid = 0 Then Return SetError (1,0,0)

    for $i = 1 to UBound ( $avWinList )-1
    $sTitle = $avWinlist[$i][0]
    $hWnd = $avWinlist[$i][1]
    $iProcessId = WinGetProcess ($hWnd)

    if $sTitle = '' and $iFilterEmptyTitle then ContinueLoop
    if $iWindowState and not BitAND(WinGetState ($hWnd,''), $iWindowState) then ContinueLoop

    if $iProcessId = $iPid Then
    if $iCount = UBound ($avWindows) Then
    ReDim $avWindows[$iCount+2][2]
    EndIf
    $avWindows[$iCount][0] = $sTitle
    $avWindows[$iCount][1] = $hWnd
    $iCount += 1
    EndIf
    Next

    if $iCount = 0 Then
    Return SetError (2,0,0)
    EndIf

    ReDim $avWindows[$iCount][2]
    Return $avWindows
    EndFunc

    [/autoit]

    Beispiel:

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    $array = _ProcessGetWindows ("firefox.exe",1,2) ;Gibt alle sichtbaren und Fenster mit Title zurück
    _ArrayDisplay ($array) ;bei mir ist jetzt ein Element in der List nämlich Beitrag bearbeiten - _ProcessGetWindows - Skripte - .: autoit.de :. - Das deutsche AutoIt-Forum - Mozilla Firefox

    [/autoit]