• Wie vielleicht manche schon gesehen haben, habe ich an einem Taskmanager geschrieben.
    So hier mal so den ich würde mich über Kritik, Lobe, usw. freuen ;)

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon
    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiTab.au3>
    #include <Array.au3>

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

    dim $Winlists[301][2]
    dim $prolists[301][2]
    $title="Taskmanager V1.0 by TheShadowAE"
    $ontop=iniread("Tasks.ini","ontop","on","0")
    global $unsichtbare=iniread("Tasks.ini","auchunsicht","on","0")

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

    #Region ### START Koda GUI section ### Form=D:\Progen\AutoIt\Meine\Forms\Tasks.kxf
    $Form1 = GUICreate($title, 633, 457, 190, 120, BitOR($WS_SYSMENU,$WS_MINIMIZEBOX))
    $Tab1 = GUICtrlCreateTab(8, 8, 617, 433)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
    $TabSheet1 = GUICtrlCreateTabItem("Tasks")
    $List1 = GUICtrlCreateList("", 24, 40, 585, 344)
    $Button1 = GUICtrlCreateButton("Aktualisieren", 24, 392, 81, 25, 0)
    $Button2 = GUICtrlCreateButton("Unsichtbare An/Aus", 120, 392, 105, 25, 0)
    $Button3 = GUICtrlCreateButton("Versteckt An/Aus", 240, 392, 105, 25, 0)
    $Button4 = GUICtrlCreateButton("Fenstertitel ändern", 360, 392, 105, 25, 0)
    $Button5 = GUICtrlCreateButton("Schließen", 480, 392, 105, 25, 0)
    $TabSheet2 = GUICtrlCreateTabItem("Prozesse")
    GUICtrlSetState(-1,$GUI_SHOW)
    $List2 = GUICtrlCreateList("", 24, 40, 585, 344)
    $Button7 = GUICtrlCreateButton("Aktualisieren", 24, 392, 81, 25, 0)
    $Button8 = GUICtrlCreateButton("Schließen", 120, 392, 105, 25, 0)
    GUICtrlCreateTabItem("")
    $Button6 = GUICtrlCreateButton("Dieses Fenster im Vordergrund halten An/Aus", 358, 0, 259, 25, 0)
    $Label1 = GUICtrlCreateLabel("", 192, 8, 160, 17)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    GUICtrlSetState($TabSheet1,$GUI_SHOW)
    if $unsichtbare=0 Then
    $liste= _WinGetVis()
    Else
    $liste= _WinGetHiVis()
    EndIf
    guictrlsetdata($List1,$liste)
    $liste=_Proget()
    guictrlsetdata($List2,$liste)
    if $ontop=1 then winsetontop($title,"",1)
    guictrlsetdata($Label1,"Tasks: "&$Winlists[0][0]&" Prozesse: "&$Prolists[0][0])

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    iniwrite("Tasks.ini","ontop","on",$ontop)
    iniwrite("Tasks.ini","auchunsicht","on",$unsichtbare)
    Exit
    case $Button1
    reprint(1)
    case $Button2
    If $unsichtbare=0 Then
    $unsichtbare=1
    Else
    $unsichtbare=0
    EndIf
    reprint(1)
    case $Button3
    $tit=gettit()
    $num=getnum($tit)
    if BitAND(WinGetState($Winlists[$num][1]), 2) Then
    WinSetState($tit,"",@SW_HIDE)
    Else
    WinSetState($tit,"",@SW_SHOW)
    EndIf
    winsettrans($tit,"",0)
    case $Button4
    $tit=gettit()
    WinSetTitle($tit,"",inputbox("Titel ändern","Neuer Fenstertitel:",$tit))
    case $Button5
    $really=msgbox(19,"Info","Wollen sie wirklich den Task schließen?"&@crlf&"Es könnte auswirkungen auf das System haben.")
    if $really=6 Then
    $tit=gettit()
    winclose($tit)
    EndIf
    case $Button6
    if $ontop=1 Then
    WinSetOnTop($title,"", 0)
    $intop=0
    Else
    WinSetOnTop($title,"", 1)
    $ontop=1
    EndIf
    case $Button7
    reprint(2)
    case $Button8
    $really=msgbox(19,"Info","Wollen sie wirklich den Prozess schließen?"&@crlf&"Es könnte auswirkungen auf das System haben.")
    if $really=6 Then
    $num=Progetnum()
    ProcessSetPriority($Prolists[$num][1],0)
    ProcessClose($Prolists[$num][1])
    EndIf
    EndSwitch
    sleep(20)
    WEnd

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

    Func _WinGetVis()
    Dim $Winvisible = ""
    $Winlist = WinList()
    $Winlists[0][0]=$Winlist[0][0]
    For $i = 1 To $Winlist[0][0]
    If StringStripCR($Winlist[$i][0]) <> "" And BitAND(WinGetState($Winlist[$i][1]), 2) Then
    $Winvisible &= "|" & $Winlist[$i][0]
    EndIf
    $Winlists[$i][0]=$Winlist[$i][0]
    $Winlists[$i][1]=$Winlist[$i][1]
    Next
    Return $Winvisible
    EndFunc

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

    Func _WinGetHiVis()
    Dim $Winvisible = ""
    $Winlist = WinList()
    $Winlists[0][0]=$Winlist[0][0]
    For $i = 1 To $Winlist[0][0]
    If StringStripCR($Winlist[$i][0]) <> "" Then
    $Winvisible &= "|" & $Winlist[$i][0]
    EndIf
    $Winlists[$i][0]=$Winlist[$i][0]
    $Winlists[$i][1]=$Winlist[$i][1]
    Next
    Return $Winvisible
    EndFunc

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

    Func _ProGet()
    Dim $Winvisible = ""
    $Prolist = ProcessList()
    $Prolists[0][0]=$Prolist[0][0]
    For $i = 1 To $Prolist[0][0]
    If StringStripCR($Prolist[$i][0]) <> "" Then
    $Winvisible &= "|" & $Prolist[$i][0]
    EndIf
    $Prolists[$i][0]=$Prolist[$i][0]
    $Prolists[$i][1]=$Prolist[$i][1]
    Next
    Return $Winvisible
    EndFunc

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

    func reprint($z)
    if $z=1 Then
    if $unsichtbare=0 then
    $liste= _WinGetVis()
    guictrlsetdata($List1,$liste)
    Else
    $liste= _WinGetHiVis()
    guictrlsetdata($List1,$liste)
    EndIf
    Else
    $liste=_Proget()
    guictrlsetdata($List2,$liste)
    EndIf
    guictrlsetdata($Label1,"Tasks: "&$Winlists[0][0]&" Prozesse: "&$Prolists[0][0])
    EndFunc

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

    Func gettit()
    return guictrlread($List1)
    EndFunc

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

    func getnum($tit)
    for $x=1 to $Winlists[0][0]
    if $tit=$Winlists[$x][0] Then
    return $x
    EndIf
    Next
    EndFunc

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

    func Progetnum()
    $tit=guictrlread($List2)
    for $x=1 to $Winlists[0][0]
    if $tit=$Winlists[$x][0] Then
    return $x
    EndIf
    Next
    EndFunc

    [/autoit]
  • Hallo.
    Ich bekomme folgenden Error.

    Code
    C:\Dokumente und Einstellungen\Pride\Desktop\test.au3 (112) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
    $Winlists[$i][0]=$Winlist[$i][0]
    ^ ERROR

    Meine Projekte:
    ClipBoard Manager (beendet)
    Gutes ClipBoard Verwaltungs Programm mit nützlichen Funktionen.

    HTML Creator (beendet)
    Nützliches Tool um schnell ein eigenes HTML Dokument zu erstellen.

  • Oh da waren noch 2 Fehler.
    So hier berichtigung:

    Spoiler anzeigen
    [autoit]


    #NoTrayIcon
    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiTab.au3>
    #include <Array.au3>

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

    $d=winlist()
    $e=processlist()
    dim $Winlists[$d[0][0]+1][2]
    dim $Prolists[$e[0][0]+1][2]
    $title="Taskmanager V1.0 by TheShadowAE"
    $ontop=iniread("Tasks.ini","ontop","on","0")
    global $unsichtbare=iniread("Tasks.ini","auchunsicht","on","0")

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

    #Region ### START Koda GUI section ### Form=D:\Progen\AutoIt\Meine\Forms\Tasks.kxf
    $Form1 = GUICreate($title, 633, 457, 190, 120, BitOR($WS_SYSMENU,$WS_MINIMIZEBOX))
    $Tab1 = GUICtrlCreateTab(8, 8, 617, 433)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
    $TabSheet1 = GUICtrlCreateTabItem("Tasks")
    $List1 = GUICtrlCreateList("", 24, 40, 585, 344)
    $Button1 = GUICtrlCreateButton("Aktualisieren", 24, 392, 81, 25, 0)
    $Button2 = GUICtrlCreateButton("Unsichtbare An/Aus", 120, 392, 105, 25, 0)
    $Button3 = GUICtrlCreateButton("Versteckt An/Aus", 240, 392, 105, 25, 0)
    $Button4 = GUICtrlCreateButton("Fenstertitel ändern", 360, 392, 105, 25, 0)
    $Button5 = GUICtrlCreateButton("Schließen", 480, 392, 105, 25, 0)
    $TabSheet2 = GUICtrlCreateTabItem("Prozesse")
    GUICtrlSetState(-1,$GUI_SHOW)
    $List2 = GUICtrlCreateList("", 24, 40, 585, 344)
    $Button7 = GUICtrlCreateButton("Aktualisieren", 24, 392, 81, 25, 0)
    $Button8 = GUICtrlCreateButton("Schließen", 120, 392, 105, 25, 0)
    GUICtrlCreateTabItem("")
    $Button6 = GUICtrlCreateButton("Dieses Fenster im Vordergrund halten An/Aus", 358, 0, 259, 25, 0)
    $Label1 = GUICtrlCreateLabel("", 192, 8, 160, 17)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    GUICtrlSetState($TabSheet1,$GUI_SHOW)
    if $unsichtbare=0 Then
    $liste= _WinGetVis()
    Else
    $liste= _WinGetHiVis()
    EndIf
    guictrlsetdata($List1,$liste)
    $liste=_Proget()
    guictrlsetdata($List2,$liste)
    if $ontop=1 then winsetontop($title,"",1)
    guictrlsetdata($Label1,"Tasks: "&$Winlists[0][0]&" Prozesse: "&$Prolists[0][0])

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    iniwrite("Tasks.ini","ontop","on",$ontop)
    iniwrite("Tasks.ini","auchunsicht","on",$unsichtbare)
    Exit
    case $Button1
    reprint(1)
    case $Button2
    If $unsichtbare=0 Then
    $unsichtbare=1
    Else
    $unsichtbare=0
    EndIf
    reprint(1)
    case $Button3
    $tit=gettit()
    if $tit<>$title then
    $num=getnum($tit)
    if BitAND(WinGetState($Winlists[$num][1]), 2) Then
    WinSetState($tit,"",@SW_HIDE)
    Else
    WinSetState($tit,"",@SW_SHOW)
    EndIf
    winsettrans($tit,"",255)
    EndIf
    case $Button4
    $tit=gettit()
    WinSetTitle($tit,"",inputbox("Titel ändern","Neuer Fenstertitel:",$tit))
    case $Button5
    $really=msgbox(19,"Info","Wollen sie wirklich den Task schließen?"&@crlf&"Es könnte auswirkungen auf das System haben.")
    if $really=6 Then
    $tit=gettit()
    winclose($tit)
    EndIf
    case $Button6
    if $ontop=0 Then
    WinSetOnTop($title,"", 1)
    $ontop=1
    Else
    WinSetOnTop($title,"", 0)
    $ontop=0
    EndIf
    case $Button7
    reprint(2)
    case $Button8
    $really=msgbox(19,"Info","Wollen sie wirklich den Prozess schließen?"&@crlf&"Es könnte auswirkungen auf das System haben.")
    if $really=6 Then
    $num=Progetnum()
    ProcessSetPriority($Prolists[$num][1],0)
    ProcessClose($Prolists[$num][1])
    EndIf
    EndSwitch
    sleep(20)
    WEnd

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

    Func _WinGetVis()
    Dim $Winvisible = ""
    $Winlist = WinList()
    dim $Winlists[$Winlist[0][0]+1][2]
    $Winlists[0][0]=$Winlist[0][0]
    For $i = 1 To $Winlist[0][0]
    If StringStripCR($Winlist[$i][0]) <> "" And BitAND(WinGetState($Winlist[$i][1]), 2) Then
    $Winvisible &= "|" & $Winlist[$i][0]
    EndIf
    $Winlists[$i][0]=$Winlist[$i][0]
    $Winlists[$i][1]=$Winlist[$i][1]
    Next
    Return $Winvisible
    EndFunc

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

    Func _WinGetHiVis()
    Dim $Winvisible = ""
    $Winlist = WinList()
    dim $Winlists[$Winlist[0][0]+1][2]
    $Winlists[0][0]=$Winlist[0][0]
    For $i = 1 To $Winlist[0][0]
    If StringStripCR($Winlist[$i][0]) <> "" Then
    $Winvisible &= "|" & $Winlist[$i][0]
    EndIf
    $Winlists[$i][0]=$Winlist[$i][0]
    $Winlists[$i][1]=$Winlist[$i][1]
    Next
    Return $Winvisible
    EndFunc

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

    Func _ProGet()
    Dim $Winvisible = ""
    $Prolist = ProcessList()
    dim $Prolists[$Prolist[0][0]+1][2]
    $Prolists[0][0]=$Prolist[0][0]
    For $i = 1 To $Prolist[0][0]
    If StringStripCR($Prolist[$i][0]) <> "" Then
    $Winvisible &= "|" & $Prolist[$i][0]
    EndIf
    $Prolists[$i][0]=$Prolist[$i][0]
    $Prolists[$i][1]=$Prolist[$i][1]
    Next
    Return $Winvisible
    EndFunc

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

    func reprint($z)
    if $z=1 Then
    if $unsichtbare=0 then
    $liste= _WinGetVis()
    guictrlsetdata($List1,$liste)
    Else
    $liste= _WinGetHiVis()
    guictrlsetdata($List1,$liste)
    EndIf
    Else
    $liste=_Proget()
    guictrlsetdata($List2,$liste)
    EndIf
    guictrlsetdata($Label1,"Tasks: "&$Winlists[0][0]&" Prozesse: "&$Prolists[0][0])
    EndFunc

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

    Func gettit()
    return guictrlread($List1)
    EndFunc

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

    func getnum($tit)
    for $x=1 to $Winlists[0][0]
    if $tit=$Winlists[$x][0] Then
    return $x
    EndIf
    Next
    EndFunc

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

    func Progetnum()
    $tit=guictrlread($List2)
    for $x=1 to $Prolists[0][0]
    if $tit=$Prolists[$x][0] Then
    return $x
    EndIf
    Next
    EndFunc

    [/autoit]

    EDIT: Code per Edit verändert wegen Schreibfehler (in case $Button6) für alle die den Bug bemerkt haben: Es war ein $intop da (jetzt nicht mehr)
    Bitte für die, die den Beitrag jetz zum zweiten mal lesen den SChreibfehler berichtigen im Programm.

    OK und wer noch nach einer Schließung Aktualisiert haben will:

    Spoiler anzeigen
    [autoit]


    #NoTrayIcon
    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiTab.au3>
    #include <Array.au3>

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

    $d=winlist()
    $e=processlist()
    dim $Winlists[$d[0][0]+1][2]
    dim $Prolists[$e[0][0]+1][2]
    $title="Taskmanager V1.0 by TheShadowAE"
    $ontop=iniread("Tasks.ini","ontop","on","0")
    global $unsichtbare=iniread("Tasks.ini","auchunsicht","on","0")

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

    #Region ### START Koda GUI section ### Form=D:\Progen\AutoIt\Meine\Forms\Tasks.kxf
    $Form1 = GUICreate($title, 633, 457, 190, 120, BitOR($WS_SYSMENU,$WS_MINIMIZEBOX))
    $Tab1 = GUICtrlCreateTab(8, 8, 617, 433)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
    $TabSheet1 = GUICtrlCreateTabItem("Tasks")
    $List1 = GUICtrlCreateList("", 24, 40, 585, 344)
    $Button1 = GUICtrlCreateButton("Aktualisieren", 24, 392, 81, 25, 0)
    $Button2 = GUICtrlCreateButton("Unsichtbare An/Aus", 120, 392, 105, 25, 0)
    $Button3 = GUICtrlCreateButton("Versteckt An/Aus", 240, 392, 105, 25, 0)
    $Button4 = GUICtrlCreateButton("Fenstertitel ändern", 360, 392, 105, 25, 0)
    $Button5 = GUICtrlCreateButton("Schließen", 480, 392, 105, 25, 0)
    $TabSheet2 = GUICtrlCreateTabItem("Prozesse")
    GUICtrlSetState(-1,$GUI_SHOW)
    $List2 = GUICtrlCreateList("", 24, 40, 585, 344)
    $Button7 = GUICtrlCreateButton("Aktualisieren", 24, 392, 81, 25, 0)
    $Button8 = GUICtrlCreateButton("Schließen", 120, 392, 105, 25, 0)
    GUICtrlCreateTabItem("")
    $Button6 = GUICtrlCreateButton("Dieses Fenster im Vordergrund halten An/Aus", 358, 0, 259, 25, 0)
    $Label1 = GUICtrlCreateLabel("", 192, 8, 160, 17)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    GUICtrlSetState($TabSheet1,$GUI_SHOW)
    if $unsichtbare=0 Then
    $liste= _WinGetVis()
    Else
    $liste= _WinGetHiVis()
    EndIf
    guictrlsetdata($List1,$liste)
    $liste=_Proget()
    guictrlsetdata($List2,$liste)
    if $ontop=1 then winsetontop($title,"",1)
    guictrlsetdata($Label1,"Tasks: "&$Winlists[0][0]&" Prozesse: "&$Prolists[0][0])

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    iniwrite("Tasks.ini","ontop","on",$ontop)
    iniwrite("Tasks.ini","auchunsicht","on",$unsichtbare)
    Exit
    case $Button1
    reprint(1)
    case $Button2
    If $unsichtbare=0 Then
    $unsichtbare=1
    Else
    $unsichtbare=0
    EndIf
    reprint(1)
    case $Button3
    $tit=gettit()
    if $tit<>$title then
    $num=getnum($tit)
    if BitAND(WinGetState($Winlists[$num][1]), 2) Then
    WinSetState($tit,"",@SW_HIDE)
    Else
    WinSetState($tit,"",@SW_SHOW)
    EndIf
    winsettrans($tit,"",255)
    EndIf
    case $Button4
    $tit=gettit()
    WinSetTitle($tit,"",inputbox("Titel ändern","Neuer Fenstertitel:",$tit))
    case $Button5
    $really=msgbox(19,"Info","Wollen sie wirklich den Task schließen?"&@crlf&"Es könnte auswirkungen auf das System haben.")
    if $really=6 Then
    $tit=gettit()
    winclose($tit)
    reprint(1)
    EndIf
    case $Button6
    if $ontop=0 Then
    WinSetOnTop($title,"", 1)
    $ontop=1
    Else
    WinSetOnTop($title,"", 0)
    $ontop=0
    EndIf
    case $Button7
    reprint(2)
    case $Button8
    $really=msgbox(19,"Info","Wollen sie wirklich den Prozess schließen?"&@crlf&"Es könnte auswirkungen auf das System haben.")
    if $really=6 Then
    $num=Progetnum()
    ProcessSetPriority($Prolists[$num][1],0)
    ProcessClose($Prolists[$num][1])
    reprint(2)
    EndIf
    EndSwitch
    sleep(20)
    WEnd

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

    Func _WinGetVis()
    Dim $Winvisible = ""
    $Winlist = WinList()
    dim $Winlists[$Winlist[0][0]+1][2]
    $Winlists[0][0]=$Winlist[0][0]
    For $i = 1 To $Winlist[0][0]
    If StringStripCR($Winlist[$i][0]) <> "" And BitAND(WinGetState($Winlist[$i][1]), 2) Then
    $Winvisible &= "|" & $Winlist[$i][0]
    EndIf
    $Winlists[$i][0]=$Winlist[$i][0]
    $Winlists[$i][1]=$Winlist[$i][1]
    Next
    Return $Winvisible
    EndFunc

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

    Func _WinGetHiVis()
    Dim $Winvisible = ""
    $Winlist = WinList()
    dim $Winlists[$Winlist[0][0]+1][2]
    $Winlists[0][0]=$Winlist[0][0]
    For $i = 1 To $Winlist[0][0]
    If StringStripCR($Winlist[$i][0]) <> "" Then
    $Winvisible &= "|" & $Winlist[$i][0]
    EndIf
    $Winlists[$i][0]=$Winlist[$i][0]
    $Winlists[$i][1]=$Winlist[$i][1]
    Next
    Return $Winvisible
    EndFunc

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

    Func _ProGet()
    Dim $Winvisible = ""
    $Prolist = ProcessList()
    dim $Prolists[$Prolist[0][0]+1][2]
    $Prolists[0][0]=$Prolist[0][0]
    For $i = 1 To $Prolist[0][0]
    If StringStripCR($Prolist[$i][0]) <> "" Then
    $Winvisible &= "|" & $Prolist[$i][0]
    EndIf
    $Prolists[$i][0]=$Prolist[$i][0]
    $Prolists[$i][1]=$Prolist[$i][1]
    Next
    Return $Winvisible
    EndFunc

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

    func reprint($z)
    if $z=1 Then
    if $unsichtbare=0 then
    $liste= _WinGetVis()
    guictrlsetdata($List1,$liste)
    Else
    $liste= _WinGetHiVis()
    guictrlsetdata($List1,$liste)
    EndIf
    Else
    $liste=_Proget()
    guictrlsetdata($List2,$liste)
    EndIf
    guictrlsetdata($Label1,"Tasks: "&$Winlists[0][0]&" Prozesse: "&$Prolists[0][0])
    EndFunc

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

    Func gettit()
    return guictrlread($List1)
    EndFunc

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

    func getnum($tit)
    for $x=1 to $Winlists[0][0]
    if $tit=$Winlists[$x][0] Then
    return $x
    EndIf
    Next
    EndFunc

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

    func Progetnum()
    $tit=guictrlread($List2)
    for $x=1 to $Prolists[0][0]
    if $tit=$Prolists[$x][0] Then
    return $x
    EndIf
    Next
    EndFunc

    [/autoit]

    3 Mal editiert, zuletzt von TheShadowAE (11. Februar 2010 um 17:49)

  • Schönes script, noch ausbaufähig aber schonmal nicht schlecht ;)

    ich erkenne eine funktion wieder :)
    cool wenn sowas echt hergenommen wird :)

    nuts hat recht. man könnte noch einige sachen kürzen. die 3 funktionen _WinGetVis() _WinGetHiVis() _ProGet() welche sich ja nur in ein paar wenigen sachen unterscheiden kann man auch zusammenfassen. und mit parameterübergabe dann das jeweils gewünschte aufrufen ;)

  • Joa die Arrays :D

    Zitat

    script, noch ausbaufähig aber

    Genau das mache ich gerade.
    Bin fast fertig mit der neuen Version, aber ich habe Probleme mit

    [autoit]

    case $Slider1,$Checkbox2
    If BitAND(GUICtrlRead($Checkbox2), $GUI_CHECKED) = $GUI_CHECKED Then
    _WinAPI_SetLayeredWindowAttributes($gui, 0xABCDEF, GUICtrlRead($Slider1))
    Else
    _WinAPI_SetLayeredWindowAttributes($gui, 0x010101, GUICtrlRead($Slider1))
    EndIf

    [/autoit]
  • Hi,

    du kannst dein Taskmanager ja noch erweitern, indem du zu jedem Prozess noch den Pfad angibst, wo die Exe des Prozesses liegt.
    Mit dieser funktion geht das:

    [autoit]

    Func _getProcessPath($ProcessName)
    Local $Item
    Local $Object = ObjGet("winmgmts:\\localhost\root\CIMV2")
    If @error Then Return SetError(2, 2, '')
    For $Item In $Object.ExecQuery ("SELECT ExecutablePath FROM Win32_Process WHERE Name='" & $ProcessName & "'", "WQL", 48)
    Return $Item.ExecutablePath
    Next
    Return SetError(1, 1, '')
    EndFunc

    [/autoit]

    Also das ist immer für einen Prozess ;)

    Greetz

  • Also mein roblem mit der Funktion :S

    Mein Script:

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon
    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiTab.au3>
    #include <Array.au3>
    #include <WinAPI.au3>

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

    $d=winlist()
    $e=processlist()
    dim $Winlists[$d[0][0]+1][2]
    dim $Prolists[$e[0][0]+1][2]
    $title="Taskmanager V1.1 by TheShadowAE"
    $ontop=iniread("Tasks.ini","ontop","on","0")
    global $unsichtbare=iniread("Tasks.ini","auchunsicht","on","0")
    $a=iniread("Tasks.ini","option","x","190")
    $b=iniread("Tasks.ini","option","y","120")

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

    #Region ### START Koda GUI section ### Form=D:\Progen\AutoIt\Meine\Forms\Tasks.kxf
    $Form1 = GUICreate($title, 633, 467, $a, $b, BitOR($WS_SYSMENU,$WS_MINIMIZEBOX))
    $Tab1 = GUICtrlCreateTab(8, 8, 617, 433)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
    $TabSheet1 = GUICtrlCreateTabItem("Tasks")
    $List1 = GUICtrlCreateList("", 24, 40, 585, 344)
    $Button1 = GUICtrlCreateButton("Aktualisieren", 24, 392, 81, 25, 0)
    $Button2 = GUICtrlCreateButton("Unsichtbare An/Aus", 120, 392, 105, 25, 0)
    $Button3 = GUICtrlCreateButton("Versteckt An/Aus", 240, 392, 105, 25, 0)
    $Button4 = GUICtrlCreateButton("Fenstertitel ändern", 360, 392, 105, 25, 0)
    $Button5 = GUICtrlCreateButton("Schließen", 480, 392, 105, 25, 0)
    $Button9 = GUICtrlCreateButton("VV", 592, 392, 25, 25, 0)
    GUICtrlSetTip(-1, "Klicke Button für das Transparenztoolfenster")
    $TabSheet2 = GUICtrlCreateTabItem("Prozesse")
    GUICtrlSetState(-1,$GUI_SHOW)
    $List2 = GUICtrlCreateList("", 24, 40, 585, 344)
    $Button7 = GUICtrlCreateButton("Aktualisieren", 24, 392, 81, 25, 0)
    $Button8 = GUICtrlCreateButton("Prozess beenden", 120, 392, 105, 25, 0)
    GUICtrlCreateTabItem("")
    $Button6 = GUICtrlCreateButton("Dieses Fenster im Vordergrund halten An/Aus", 358, 0, 259, 25, 0)
    $Label1 = GUICtrlCreateLabel("", 192, 8, 160, 17)
    GUISetState(@SW_SHOW,$Form1)
    #EndRegion ### END Koda GUI section ###
    #Region ### START Koda GUI section ### Form=D:\Progen\AutoIt\Meine\Forms\Taskst.kxf
    $Form2 = GUICreate("Transparenz", 257, 141, 365, 13, BitOR($WS_MAXIMIZEBOX,$WS_MINIMIZEBOX,$WS_SIZEBOX,$WS_THICKFRAME,$WS_SYSMENU,$WS_CAPTION,$WS_OVERLAPPEDWINDOW,$WS_TILEDWINDOW,$WS_POPUP,$WS_POPUPWINDOW,$WS_GROUP,$WS_TABSTOP,$WS_BORDER), BitOR($WS_EX_OVERLAPPEDWINDOW,$WS_EX_TOOLWINDOW,$WS_EX_WINDOWEDGE))
    $Slider1 = GUICtrlCreateSlider(16, 32, 225, 25)
    GUICtrlSetLimit($Slider1, 255, 0)
    GUICtrlSetData(-1, 255)
    $Checkbox1 = GUICtrlCreateCheckbox("Fensterränder entfernt", 32, 64, 129, 33)
    $Checkbox2 = GUICtrlCreateCheckbox("Hintergrundtranspraenz", 32, 104, 129, 33)
    $Label2 = GUICtrlCreateLabel("Alpha:", 24, 8, 36, 17)
    GUISetState(@SW_HIDE,$Form2)
    #EndRegion ### END Koda GUI section ###

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

    GUICtrlSetState($TabSheet1,$GUI_SHOW)
    if $unsichtbare=0 Then
    $liste= _WinGetVis()
    Else
    $liste= _WinGetHiVis()
    EndIf
    guictrlsetdata($List1,$liste)
    $liste=_Proget()
    guictrlsetdata($List2,$liste)
    if $ontop=1 then winsetontop($title,"",1)
    guictrlsetdata($Label1,"Tasks: "&$Winlists[0][0]&" Prozesse: "&$Prolists[0][0])

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

    While 1
    $enMsg = GUIGetMsg(1)
    $nMsg=$enMsg[0]
    switch $enMsg[1]
    case $Form1
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    iniwrite("Tasks.ini","ontop","on",$ontop)
    iniwrite("Tasks.ini","auchunsicht","on",$unsichtbare)
    $wi=wingetpos($title)
    iniwrite("Tasks.ini","option","x",$wi[0])
    iniwrite("Tasks.ini","option","y",$wi[1])
    Exit
    case $Button1
    reprint(1)
    case $Button2
    If $unsichtbare=0 Then
    $unsichtbare=1
    Else
    $unsichtbare=0
    EndIf
    reprint(1)
    case $Button3
    $tit=gettit()
    if $tit<>$title then
    $num=getnum($tit)
    if BitAND(WinGetState($Winlists[$num][1]), 2) Then
    WinSetState($tit,"",@SW_HIDE)
    Else
    WinSetState($tit,"",@SW_SHOW)
    winactivate($title)
    EndIf
    winsettrans($tit,"",255)
    EndIf
    case $Button4
    $tit=gettit()
    WinSetTitle($tit,"",inputbox("Titel ändern","Neuer Fenstertitel:",$tit))
    case $Button5
    $really=msgbox(19,"Info","Wollen sie wirklich den Task schließen?"&@crlf&"Es könnte auswirkungen auf das System haben.")
    if $really=6 Then
    $tit=gettit()
    winclose($tit)
    reprint(1)
    EndIf
    case $Button6
    if $ontop=0 Then
    WinSetOnTop($title,"", 1)
    $ontop=1
    Else
    WinSetOnTop($title,"", 0)
    $ontop=0
    EndIf
    case $Button7
    reprint(2)
    case $Button8
    $really=msgbox(19,"Info","Wollen sie wirklich den Prozess schließen?"&@crlf&"Es könnte auswirkungen auf das System haben.")
    if $really=6 Then
    $num=Progetnum()
    ProcessSetPriority($Prolists[$num][1],0)
    ProcessClose($Prolists[$num][1])
    reprint(2)
    EndIf
    case $Button9
    guisetstate(@SW_SHOW,$Form2)
    EndSwitch
    case $Form2
    $tit=gettit()
    $gui=wingethandle($tit)
    switch $nMsg
    case $GUI_EVENT_CLOSE
    guisetstate(@SW_HIDE,$Form2)
    case $Slider1,$Checkbox2
    If BitAND(GUICtrlRead($Checkbox2), $GUI_CHECKED) = $GUI_CHECKED Then
    _WinAPI_SetLayeredWindowAttributes($gui, 0xABCDEF, GUICtrlRead($Slider1))
    Else
    _WinAPI_SetLayeredWindowAttributes($gui, 0x010101, GUICtrlRead($Slider1))
    EndIf
    case $Checkbox1
    If BitAND(GUICtrlRead($Checkbox1), $GUI_CHECKED) = $GUI_CHECKED Then
    GUISetStyle($WS_POPUP, -1, $gui)
    Else
    GUISetStyle($GUI_SS_DEFAULT_GUI, -1, $gui)
    EndIf
    EndSwitch
    EndSwitch
    sleep(20)
    WEnd

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

    Func _WinGetVis()
    Dim $Winvisible = ""
    $Winlist = WinList()
    dim $Winlists[$Winlist[0][0]+1][2]
    $Winlists[0][0]=$Winlist[0][0]
    For $i = 1 To $Winlist[0][0]
    If StringStripCR($Winlist[$i][0]) <> "" And BitAND(WinGetState($Winlist[$i][1]), 2) Then
    $Winvisible &= "|" & $Winlist[$i][0]
    EndIf
    $Winlists[$i][0]=$Winlist[$i][0]
    $Winlists[$i][1]=$Winlist[$i][1]
    Next
    Return $Winvisible
    EndFunc

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

    Func _WinGetHiVis()
    Dim $Winvisible = ""
    $Winlist = WinList()
    dim $Winlists[$Winlist[0][0]+1][2]
    $Winlists[0][0]=$Winlist[0][0]
    For $i = 1 To $Winlist[0][0]
    If StringStripCR($Winlist[$i][0]) <> "" Then
    $Winvisible &= "|" & $Winlist[$i][0]
    EndIf
    $Winlists[$i][0]=$Winlist[$i][0]
    $Winlists[$i][1]=$Winlist[$i][1]
    Next
    Return $Winvisible
    EndFunc

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

    Func _ProGet()
    Dim $Winvisible = ""
    $Prolist = ProcessList()
    dim $Prolists[$Prolist[0][0]+1][2]
    $Prolists[0][0]=$Prolist[0][0]
    For $i = 1 To $Prolist[0][0]
    If StringStripCR($Prolist[$i][0]) <> "" Then
    $Winvisible &= "|" & $Prolist[$i][0] & " Filepath: " &_getProcessPath($Prolist[$i][0])
    EndIf
    $Prolists[$i][0]=$Prolist[$i][0]
    $Prolists[$i][1]=$Prolist[$i][1]
    Next
    Return $Winvisible
    EndFunc

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

    func reprint($z)
    if $z=1 Then
    if $unsichtbare=0 then
    $liste= _WinGetVis()
    guictrlsetdata($List1,$liste)
    Else
    $liste= _WinGetHiVis()
    guictrlsetdata($List1,$liste)
    EndIf
    Else
    $liste=_Proget()
    guictrlsetdata($List2,$liste)
    EndIf
    guictrlsetdata($Label1,"Tasks: "&$Winlists[0][0]&" Prozesse: "&$Prolists[0][0])
    EndFunc

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

    Func gettit()
    return guictrlread($List1)
    EndFunc

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

    func getnum($tit)
    for $x=1 to $Winlists[0][0]
    if $tit=$Winlists[$x][0] Then
    return $x
    EndIf
    Next
    EndFunc

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

    func Progetnum()
    $tit=guictrlread($List2)
    for $x=1 to $Prolists[0][0]
    if $tit=$Prolists[$x][0] Then
    return $x
    EndIf
    Next
    EndFunc

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

    Func _getProcessPath($ProcessName)
    Local $Item
    Local $Object = ObjGet("winmgmts:\\localhost\root\CIMV2")
    If @error Then Return SetError(2, 2, '')
    For $Item In $Object.ExecQuery ("SELECT ExecutablePath FROM Win32_Process WHERE Name='" & $ProcessName & "'", "WQL", 48)
    Return $Item.ExecutablePath
    Next
    Return SetError(1, 1, '')
    EndFunc

    [/autoit]

    Beispielscript:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <WINAPI.au3>

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

    $gui = GUICreate("Trans", 300, 400, -1, -1, -1, $WS_EX_LAYERED)
    GUICtrlCreateLabel("Dies ist ein Text auf einem transparenten mehrlagigen GUI", 10, 10, 200, 40, -1, $GUI_WS_EX_PARENTDRAG)
    GUICtrlSetTip(-1, "Klicke Label um mehrlagiges Fenster zu ziehen")
    $layButt = GUICtrlCreateButton("Button", 10, 40, 40)
    GUISetBkColor(0xABCDEF)
    _WinAPI_SetLayeredWindowAttributes($gui, 0x010101)
    GUISetState()

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

    $guiSteuerelement = GUICreate("ControlGUI", 300, 400, 100, 100)
    $checkTrans = GUICtrlCreateCheckbox("Transparente Farbe 0xABCDEF (markiert) OdeR 0x010101", 10, 10)
    $checkBorder = GUICtrlCreateCheckbox("POPUP-Stil", 10, 30)
    GUICtrlCreateLabel("Transparenz für mehrlagiges GUI", 10, 50)
    $slidTrans = GUICtrlCreateSlider(10, 70, 200, 30)
    GUICtrlSetLimit($slidTrans, 255, 0)
    GUICtrlSetData(-1, 255)
    GUISetState()

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

    While 1
    $extMsg = GUIGetMsg(1)
    $msg = $extMsg[0]
    Switch $extMsg[1]
    Case $guiSteuerelement
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    Case $msg = $checkTrans Or $msg = $slidTrans

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

    ; Ändere Attribute der transparenten Farbe und Fenstertransparenz

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

    If BitAND(GUICtrlRead($checkTrans), $GUI_CHECKED) = $GUI_CHECKED Then
    _WinAPI_SetLayeredWindowAttributes($gui, 0xABCDEF, GUICtrlRead($slidTrans))
    Else
    _WinAPI_SetLayeredWindowAttributes($gui, 0x010101, GUICtrlRead($slidTrans))
    EndIf

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

    Case $msg = $checkBorder
    If BitAND(GUICtrlRead($checkBorder), $GUI_CHECKED) = $GUI_CHECKED Then
    GUISetStyle($WS_POPUP, -1, $gui)
    Else
    GUISetStyle($GUI_SS_DEFAULT_GUI, -1, $gui)
    EndIf
    EndSelect
    Case $gui
    Select
    Case $msg = $layButt
    Dim $transcolor, $alpha
    $info = _WinAPI_GetLayeredWindowAttributes($gui,$transcolor, $alpha)
    MsgBox(0, 'Mehrlagiges GUI', "Button auf mehrlagigem Fenster geklickt" & @CRLF & _
    "Informationen über dieses Fenster: " & @CRLF & _
    "Transparente Farbe: " & $transcolor & @CRLF & _
    "Alpha Wert: " & $alpha & @CRLF & _
    "LWA_COLORKEY: " & (BitAND($info,$LWA_COLORKEY)=$LWA_COLORKEY) & @CRLF & _
    "LWA_ALPHA: " & (BitAND($info,$LWA_ALPHA)=$LWA_ALPHA) )
    Case $msg = $GUI_EVENT_CLOSE
    Exit MsgBox(0, '', "Schließen des mehrlagigen GUI")
    EndSelect
    EndSwitch
    WEnd

    [/autoit]

    Ich kapiere leider mein Fehler mit _WinAPI_SetLayeredWindowAttributes nicht.

    Einmal editiert, zuletzt von TheShadowAE (11. Februar 2010 um 20:12)

  • Änder mal folgendes:

    [autoit]

    If BitAND(GUICtrlRead($Checkbox2), $GUI_CHECKED) = $GUI_CHECKED Then

    [/autoit]


    zu

    [autoit]

    If BitAND(GUICtrlRead($Checkbox2), $GUI_CHECKED) Then

    [/autoit]