Aktive Tasks auflisten

  • Schau dir mal

    [autoit]

    Winlist()

    [/autoit]


    an

    Sind TV-Quizfragen zu einfach? A) Ja B) Harry Potter

    Spoiler anzeigen

    Ich gebe zu dieser Post hat wahrscheinlich nicht viel geholfen,
    aber ich versuche wenigstens zu helfen :rolleyes:

  • Damit arbeite ich auch schon, aber das ist nicht das, was ich will!
    Winlist() gibt bei mir im Schnitt 160 Zeilen aus, das sind in meinem Fall 154 zu viel!
    Bis ich da alles unnütze heraus gefilterter habe ... und Programme wie die Win7-Gatgets kann ich nicht bestimmen ... die werden im TaskMan unter Anwendungen aber auch nicht aufgelistet ... genau so möchte ich es auch haben!

  • [autoit]

    $var = WinList()

    [/autoit][autoit][/autoit][autoit]

    For $i = 1 to $var[0][0]
    ; Listet nur die sichtbaren Fenster auf, die einen Titel haben
    If $var[$i][0] <> "" AND IsVisible($var[$i][1]) Then
    MsgBox(0, "Details", "Titel=" & $var[$i][0] & @LF & "Handle=" & $var[$i][1])
    EndIf
    Next

    [/autoit][autoit][/autoit][autoit]

    Func IsVisible($handle)
    If BitAnd( WinGetState($handle), 2 ) Then
    Return 1
    Else
    Return 0
    EndIf
    EndFunc

    [/autoit]


    geht das?^^

    Sind TV-Quizfragen zu einfach? A) Ja B) Harry Potter

    Spoiler anzeigen

    Ich gebe zu dieser Post hat wahrscheinlich nicht viel geholfen,
    aber ich versuche wenigstens zu helfen :rolleyes:

  • geht das?^^

    Nein, genügt nicht!
    Ich habe schon ne Fkt. geschrieben, die mir viel mehr aus gibt: crys_cmini_info()

    Ich möchte aber nur die gelb hervorgehobenen Namen haben, die anderen sind u.A. Win7-Gadgets, die nicht in der Liste auftauen sollten:
    [Blockierte Grafik: http://saved.im/mtg2mjk3bglq_vs/winstate.png]
    Nach den Namen kann ich die nicht aussortieren, dafür gibt es einfach unzählig viele ...

  • Nicht Optimal aber versuch das mal

    [autoit]

    #include <array.au3>

    [/autoit][autoit][/autoit][autoit]

    $var = WinList()
    Global $Var2[2]

    [/autoit][autoit][/autoit][autoit]

    $i2 = 1
    For $i = 1 to $var[0][0]
    If $var[$i][0] <> "" AND IsVisible($var[$i][1]) Then
    $Process = StringSplit(_GetPathByPid(WinGetProcess($var[$i][0])),"\")
    If $Process[$Process[0]] = "sidebar.exe" Or $Process[$Process[0]] = "Explorer.EXE" Then
    Else
    $Var2[$i2] = $var[$i][0]
    $Var2[0]=$i2
    $i2+=1
    ReDim $Var2[$i2+1]
    EndIf
    EndIf
    Next
    _ArrayDisplay($Var2)

    [/autoit][autoit][/autoit][autoit]

    Func IsVisible($handle)
    If BitAnd( WinGetState($handle), 2 ) Then
    Return 1
    Else
    Return 0
    EndIf
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func _GetPathByPid($iPID)
    Local $aProc = DllCall('kernel32.dll', 'hwnd', 'OpenProcess', 'int', 0x0410, 'int', 0, 'int', $iPID)
    If $aProc[0] = 0 Then Return SetError(1, 0, '')
    Local $vStruct = DllStructCreate('int[1024]')
    DllCall('psapi.dll', 'int', 'EnumProcessModules', 'hwnd', $aProc[0], 'ptr', DllStructGetPtr($vStruct), 'int', DllStructGetSize($vStruct), 'int_ptr', 0)
    Local $aReturn = DllCall('psapi.dll', 'int', 'GetModuleFileNameExW', 'hwnd', $aProc[0], 'int', DllStructGetData($vStruct, 1), 'wstr', '', 'int', 2048)
    If $aReturn[0] = 0 Then Return SetError(2, 0, '')
    Return $aReturn[3]
    EndFunc

    [/autoit]

    Sind TV-Quizfragen zu einfach? A) Ja B) Harry Potter

    Spoiler anzeigen

    Ich gebe zu dieser Post hat wahrscheinlich nicht viel geholfen,
    aber ich versuche wenigstens zu helfen :rolleyes:

  • Die Fkt. _GetPathByPid() gibt bei allen relevanten Prozessen (Start, Sidebar, Explorer, ...) immer @error=1 aus!
    Ich kann aber nicht sagen wieso ...
    Bei allen anderen Prozessen (FF, iTunes, ...) gibt die Fkt. _GetPathByPid() einen leeren String aus.

    Auch soll natürlich nicht alles, was vom explorer.exe Prozess kommt ignoriert werden, da die Ordner Fenster in die Liste gehören ;)

    Aber der Ansatz ist gut, ich weiß aber nicht wie ich das zum laufen bekommen könnte ...