warum geht das fenster immer zu

  • Was ist falsch, warum das fenster immer zu geht?

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    #region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=FILER.ICO
    #AutoIt3Wrapper_Outfile=WE V0.12.exe
    #AutoIt3Wrapper_Compression=0
    #AutoIt3Wrapper_Res_Fileversion=0.0.0.20
    #AutoIt3Wrapper_Res_FileVersion_AutoIncrement=y
    #AutoIt3Wrapper_Run_Tidy=y
    #endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
    ; *** Start added by AutoIt3Wrapper ***
    #include <ListViewConstants.au3>
    #include <GUIConstants.au3>
    #include <ProgressConstants.au3>
    #include <GuiListView.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <Constants.au3>
    #include <GuiButton.au3>
    #include <GuiStatusBar.au3>
    #include <GDIPlus.au3>
    #include <BkPic.au3>
    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <ListboxConstants.au3>
    #include <EditConstants.au3>
    #include <ProgressConstants.au3>
    #include <UpdownConstants.au3>
    #include <StaticConstants.au3>
    #include <TabConstants.au3>
    #include <DateTimeConstants.au3>
    #include <TreeviewConstants.au3>
    #include <ListviewConstants.au3>
    Dim $vlist
    Dim $hlist
    Dim $abort
    Dim $flash
    Dim $memval
    $font = "Arial"
    Global $defaultstatus = "Ready"
    Global $status
    HotKeySet("^+!{f8}", "mma")
    $timer = 1
    $me = "Window Ender"
    $ver = "v0.12"
    $vlist = 0
    $hlist = 0
    $s = 0
    #region AutoIt-Optionen
    Opt('GUIOnEventMode', 1)
    Opt('MustDeclareVars', 1)
    Opt('GUICloseOnESC', 1)
    #endregion AutoIt-Optionen
    Opt("TrayMenuMode", 1) ; Default tray menu items (Script Paused/Exit) will not be shown.
    Opt("GUIDataSeparatorChar", "")
    Global $start_check = WinGetProcess($me)
    If ProcessExists($start_check) Then
    Global $ok = MsgBox(4 + 8192 + 262144 + 48, $me, "Fenster Ender läuft bereits , wollen Sie die 1. Instanz erneut öffnen ? ", 3)
    If $ok = 7 Then Exit
    If $ok = 6 Then
    ProcessClose($start_check)
    EndIf
    EndIf
    Global $bSaveBinary, $sB64String, $file
    _Base64String($bSaveBinary = False)
    _Base64Decode($sB64String)
    Global $max = TrayCreateItem("Anzeigen")
    TrayItemSetState($max, $TRAY_DISABLE)
    Global $min = TrayCreateItem("Verstecken")
    TrayCreateItem("", -1)
    Global $tshutdown = TrayCreateItem("Herunterfahren")
    Global $trestart = TrayCreateItem("Neustart")
    TrayCreateItem("", -1)
    Global $aboutitem = TrayCreateItem("Über uns")
    TrayCreateItem("")
    Global $exititem = TrayCreateItem("Beenden")
    TraySetState()
    TraySetClick(16)
    TrayItemSetState($min, $TRAY_DEFAULT)
    Global $gui = GUICreate($me, 650, 500, -1, -1)
    Global $gui = GUICtrlCreateMenu("&Datei")
    Global $menu_exit = GUICtrlCreateMenuItem("Beenden", $file)
    Global $view = GUICtrlCreateMenu("View")
    Global $menu_hide = GUICtrlCreateMenuItem("Verbergen", $view)
    GUICtrlCreateMenuItem("", $view)
    Global $viewstatus = GUICtrlCreateMenuItem("Statusbar", $view)
    GUICtrlSetState(-1, $GUI_CHECKED)
    Global $help = GUICtrlCreateMenu("Hilfe")
    Global $menu_about = GUICtrlCreateMenuItem("Über Uns", $help)
    Global $visibleprogramlist = GUICtrlCreateListView("Geöffnetes Fenster ", 10, 35, 180, 300, $LVS_SORTASCENDING + $LVS_REPORT + $LVS_SINGLESEL)
    Global $hiddenprogramlist = GUICtrlCreateListView("Geöffnetes Fenster ", 200, 35, 180, 300, $LVS_SORTASCENDING + $LVS_REPORT + $LVS_SINGLESEL)
    Global $vscan = GUICtrlCreateButton("Scannen", 398, 55, 80)
    Global $vhide = GUICtrlCreateButton("Verbergen", 398, 85, 80)
    Global $vshow = GUICtrlCreateButton("Anzeigen", 398, 115, 80)
    Global $hscan = GUICtrlCreateButton("Scannen", 502, 55, 80)
    Global $hhide = GUICtrlCreateButton("Verbergen", 502, 85, 80)
    Global $hshow = GUICtrlCreateButton("Anzeigen", 502, 115, 80)
    Global $sys = GUICtrlCreateButton("System-Eigenschaften", 391, 250, 97)
    Global $msconfig = GUICtrlCreateButton("MS Config", 488, 250, 97)
    Global $sfc = GUICtrlCreateButton("System-Datei überprüfen", 391, 275, 97)
    Global $regedit = GUICtrlCreateButton("Registry Editor", 488, 275, 97)
    Global $tmgr = GUICtrlCreateButton("Task Manager", 391, 300, 97)
    Global $compmgmt = GUICtrlCreateButton("Comp. Manager.", 488, 300, 97) ;compmgmt.msc
    ;~ GUICtrlSetFont($compmgmt,7.5,350)
    Global $rstrui = GUICtrlCreateButton("Systemwiederherstellung", 391, 325, 97)
    Global $eventvwr = GUICtrlCreateButton("Ereignisanzeige", 488, 325, 97)
    Global $shutdown = GUICtrlCreateButton("Herunterfahren erzwingen", 391, 370, 97)
    Global $restart = GUICtrlCreateButton("Neustart erzwingen", 488, 370, 97)
    GUICtrlCreateGroup("Sichtbare Fenster", 388, 35, 100, 110)
    GUICtrlCreateGroup("Alle Fenster", 492, 35, 100, 110)
    GUICtrlCreateGroup("Sichtbare Fenster", 13, 340, 174, 100)
    GUICtrlCreateGroup("Alle Fenster", 203, 340, 174, 100)
    GUICtrlCreateGroup("Windows Tools", 388, 230, 200, 170)
    $memval = "0"
    Global $memgroup = GUICtrlCreateGroup("Speicherverbrauch : (" & $memval & "%) ", 388, 150, 200, 55)
    Global $membar = GUICtrlCreateProgress(393, 170, 190, 25)
    Global $vend = GUICtrlCreateButton("End Window", 40, 355, 120, 23)
    Global $vpend = GUICtrlCreateButton("Prozess beenden", 40, 382, 120, 23)
    Global $vclear = GUICtrlCreateButton("Liste leeren", 40, 410, 120, 23)
    Global $hend = GUICtrlCreateButton("End Window", 230, 355, 120, 23)
    Global $hpend = GUICtrlCreateButton("Prozess beenden", 230, 382, 120, 23)
    Global $hclear = GUICtrlCreateButton("Liste leeren", 230, 410, 120, 23)
    GUICtrlCreateLabel("Sichtbare Fenster", 55, 10, -1, -1, $WS_BORDER + $SS_CENTER)
    GUICtrlCreateLabel("Alle Fenster", 255, 10, -1, -1, $WS_BORDER + $SS_CENTER)
    Global $priority = WinGetProcess($me)
    ProcessSetPriority($priority, 4)
    background(-1)
    GUICtrlSetImage(-1, @ScriptDir & "\windowslive.jpg")

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


  • Doch das ist drin, wenn auch etwas versteckt mangels übersichtlicher Formatierung des Quellcodes. Die Frage ist eher wann geht das Fenster denn zu?`Direkt nach deiner msgbox?


    [autoit]


    Global $start_check = WinGetProcess($me)
    If ProcessExists($start_check) Then
    Global $ok = MsgBox(4 + 8192 + 262144 + 48, $me, "Fenster Ender läuft bereits , wollen Sie die 1. Instanz erneut öffnen ? ", 3)
    If $ok = 7 Then Exit
    If $ok = 6 Then
    ProcessClose($start_check)
    EndIf
    EndIf

    [/autoit]


    Da würde ich mal den Fehler vermuten. Nur wenn Abbrechen (x des msgbox Fensters) geklickt wird dürfte nichts passieren, wenn du hingegen Ja oder Nein anklickts dürfte der aktuelle Prozess beendet werden. Exit beendet ohnehin und processclose schiesst sich selbst ab (kA ob das technisch überhaupt geht, nie probiert). Ob das so von dir beabsichtigt ist keine Ahnung.


    Edit:

    Ja das guisetstate fehlt scheinbar... ausserdem sehe ich keine Endlossschleife, die das Programm am Leben halten würde und die von dir genutzten Funktionen fehlen auch im Scriptausschnitt.

    Einmal editiert, zuletzt von misterspeed (9. Februar 2013 um 10:46)

  • du kannst in deiner Situation auch mit

    [autoit]

    _Singleton ; Guck dir den 2ten Parameter an

    [/autoit]


    arbeiten
    Deine Lösung sollte evtl. auch funktionieren, kann man aber nicht testen , weil Fuktionen fehlen.

  • Wenn du schon ein Skript einsellst sollte dieses, bis auf den Fehler, auch lauffähig sein:

    da kein Mensch ahnt wie es in deinem Skript wirlich aussieht solltest du

    • es schnellstens ein stellen
    • bzw. keine sinnvolle Hilfe erwarten.

    mfg autoBert

  • sorry für die verspätung:

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.0.0
    Author: egymma [Mohamed Ashraf]

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

    Script Function:
    Close,Hide and Show running window or not responding window + more tools.

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

    #ce ----------------------------------------------------------------------------
    #NoTrayIcon
    #region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=FILER.ICO
    #AutoIt3Wrapper_Outfile=WE V0.12.exe
    #AutoIt3Wrapper_Compression=0
    #AutoIt3Wrapper_Res_Fileversion=0.0.0.20
    #AutoIt3Wrapper_Res_FileVersion_AutoIncrement=y
    #AutoIt3Wrapper_Run_Tidy=y
    #endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
    ; *** Start added by AutoIt3Wrapper ***
    #include <ListViewConstants.au3>
    #include <GUIConstants.au3>
    #include <ProgressConstants.au3>
    #include <GuiListView.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <Constants.au3>
    #include <GuiButton.au3>
    #include <GuiStatusBar.au3>
    #include <GDIPlus.au3>
    #include <BkPic.au3>
    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <ListboxConstants.au3>
    #include <EditConstants.au3>
    #include <ProgressConstants.au3>
    #include <UpdownConstants.au3>
    #include <StaticConstants.au3>
    #include <TabConstants.au3>
    #include <DateTimeConstants.au3>
    #include <TreeviewConstants.au3>
    #include <ListviewConstants.au3>
    #include <String.au3>
    #include <Array.au3>
    Dim $vlist
    Dim $hlist
    Dim $abort
    Dim $flash
    Dim $memval
    $font = "Arial"
    Global $defaultstatus = "Ready"
    Global $status
    HotKeySet("^+!{f8}", "mma")
    $timer = 1
    $me = "Window Ender"
    $ver = "v0.12"
    $vlist = 0
    $hlist = 0
    $s = 0
    #region AutoIt-Optionen
    Opt('GUIOnEventMode', 1)
    Opt('MustDeclareVars', 1)
    Opt('GUICloseOnESC', 1)
    #endregion AutoIt-Optionen
    Opt("TrayMenuMode", 1) ; Default tray menu items (Script Paused/Exit) will not be shown.
    Opt("GUIDataSeparatorChar", "")
    Global $start_check = WinGetProcess($me)
    If ProcessExists($start_check) Then
    Global $ok = MsgBox(4 + 8192 + 262144 + 48, $me, "Fenster Ender läuft bereits , wollen Sie die 1. Instanz erneut öffnen ? ", 3)
    If $ok = 7 Then Exit
    If $ok = 6 Then
    ProcessClose($start_check)
    EndIf
    EndIf
    Global $bSaveBinary, $sB64String, $file
    _Base64String($bSaveBinary = False)
    _Base64Decode($Base64String)
    Global $max = TrayCreateItem("Anzeigen")
    TrayItemSetState($max, $TRAY_DISABLE)
    Global $min = TrayCreateItem("Verstecken")
    TrayCreateItem("", -1)
    Global $tshutdown = TrayCreateItem("Herunterfahren")
    Global $trestart = TrayCreateItem("Neustart")
    TrayCreateItem("", -1)
    Global $aboutitem = TrayCreateItem("Über uns")
    TrayCreateItem("")
    Global $exititem = TrayCreateItem("Beenden")
    TraySetState()
    TraySetClick(16)
    TrayItemSetState($min, $TRAY_DEFAULT)
    Global $gui = GUICreate($me, 650, 500, -1, -1)
    Global $gui = GUICtrlCreateMenu("&Datei")
    Global $menu_exit = GUICtrlCreateMenuItem("Beenden", $file)
    Global $view = GUICtrlCreateMenu("View")
    Global $menu_hide = GUICtrlCreateMenuItem("Verbergen", $view)
    GUICtrlCreateMenuItem("", $view)
    Global $viewstatus = GUICtrlCreateMenuItem("Statusbar", $view)
    GUICtrlSetState(-1, $GUI_CHECKED)
    Global $help = GUICtrlCreateMenu("Hilfe")
    Global $menu_about = GUICtrlCreateMenuItem("Über Uns", $help)
    Global $visibleprogramlist = GUICtrlCreateListView("Geöffnetes Fenster ", 10, 35, 180, 300, $LVS_SORTASCENDING + $LVS_REPORT + $LVS_SINGLESEL)
    Global $hiddenprogramlist = GUICtrlCreateListView("Geöffnetes Fenster ", 200, 35, 180, 300, $LVS_SORTASCENDING + $LVS_REPORT + $LVS_SINGLESEL)
    Global $vscan = GUICtrlCreateButton("Scannen", 398, 55, 80)
    Global $vhide = GUICtrlCreateButton("Verbergen", 398, 85, 80)
    Global $vshow = GUICtrlCreateButton("Anzeigen", 398, 115, 80)
    Global $hscan = GUICtrlCreateButton("Scannen", 502, 55, 80)
    Global $hhide = GUICtrlCreateButton("Verbergen", 502, 85, 80)
    Global $hshow = GUICtrlCreateButton("Anzeigen", 502, 115, 80)
    Global $sys = GUICtrlCreateButton("System-Eigenschaften", 391, 250, 97)
    Global $msconfig = GUICtrlCreateButton("MS Config", 488, 250, 97)
    Global $sfc = GUICtrlCreateButton("System-Datei überprüfen", 391, 275, 97)
    Global $regedit = GUICtrlCreateButton("Registry Editor", 488, 275, 97)
    Global $tmgr = GUICtrlCreateButton("Task Manager", 391, 300, 97)
    Global $compmgmt = GUICtrlCreateButton("Comp. Manager.", 488, 300, 97) ;compmgmt.msc
    ;~ GUICtrlSetFont($compmgmt,7.5,350)
    Global $rstrui = GUICtrlCreateButton("Systemwiederherstellung", 391, 325, 97)
    Global $eventvwr = GUICtrlCreateButton("Ereignisanzeige", 488, 325, 97)
    Global $shutdown = GUICtrlCreateButton("Herunterfahren erzwingen", 391, 370, 97)
    Global $restart = GUICtrlCreateButton("Neustart erzwingen", 488, 370, 97)
    GUICtrlCreateGroup("Sichtbare Fenster", 388, 35, 100, 110)
    GUICtrlCreateGroup("Alle Fenster", 492, 35, 100, 110)
    GUICtrlCreateGroup("Sichtbare Fenster", 13, 340, 174, 100)
    GUICtrlCreateGroup("Alle Fenster", 203, 340, 174, 100)
    GUICtrlCreateGroup("Windows Tools", 388, 230, 200, 170)
    $memval = "0"
    Global $memgroup = GUICtrlCreateGroup("Speicherverbrauch : (" & $memval & "%) ", 388, 150, 200, 55)
    Global $membar = GUICtrlCreateProgress(393, 170, 190, 25)
    Global $vend = GUICtrlCreateButton("End Window", 40, 355, 120, 23)
    Global $vpend = GUICtrlCreateButton("Prozess beenden", 40, 382, 120, 23)
    Global $vclear = GUICtrlCreateButton("Liste leeren", 40, 410, 120, 23)
    Global $hend = GUICtrlCreateButton("End Window", 230, 355, 120, 23)
    Global $hpend = GUICtrlCreateButton("Prozess beenden", 230, 382, 120, 23)
    Global $hclear = GUICtrlCreateButton("Liste leeren", 230, 410, 120, 23)
    GUICtrlCreateLabel("Sichtbare Fenster", 55, 10, -1, -1, $WS_BORDER + $SS_CENTER)
    GUICtrlCreateLabel("Alle Fenster", 255, 10, -1, -1, $WS_BORDER + $SS_CENTER)
    Global $priority = WinGetProcess($me)
    ProcessSetPriority($priority, 4)
    background(-1)
    GUICtrlSetImage(-1, @ScriptDir & "\windowslive.jpg")
    Func about()
    MsgBox(8192 + 262144 + 64, $me & " " & $ver, "Mod. von T.G. " & @CRLF & "PC Controll Manager" & @CRLF & "May 20, 2013")
    ;~ MsgBox(8192 + 64 + 262144, $me & " " & $ver, "Coded by 'Mohamed Ashraf'")
    EndFunc ;==>about
    Func vlist()
    $visibleprogramlist = GUICtrlCreateListView("Geöffnetes Fenster ", 10, 35, 180, 300, $LVS_SORTASCENDING + $LVS_REPORT + $LVS_SINGLESEL)
    EndFunc ;==>vlist
    Func hlist()
    $hiddenprogramlist = GUICtrlCreateListView("Geöffnetes Fenster ", 200, 35, 180, 300, $LVS_SORTASCENDING + $LVS_REPORT + $LVS_SINGLESEL)
    EndFunc ;==>hlist
    Func disable()
    GUISetState(@SW_DISABLE)
    EndFunc ;==>disable
    Func enable()
    GUISetState(@SW_ENABLE)
    ;~ WinActivate($me)
    EndFunc ;==>enable
    Func activate()
    WinActivate($me)
    EndFunc ;==>activate
    Func IsVisible($handle)
    If BitAND(WinGetState($handle), 2) Then
    Return 1
    Else
    Return 0
    EndIf
    EndFunc ;==>IsVisible
    Func vscan()
    ;;;;;;;;;;;;;;;;;visible;;;;;;;;;;;;;;
    GUICtrlDelete($visibleprogramlist)
    vlist()
    $vlist = WinList()
    For $i = 1 To $vlist[0][0]
    If $vlist[$i][0] <> "" And IsVisible($vlist[$i][1]) And $vlist[$i][0] <> ($me) And $vlist[$i][0] <> ("AutoIt v3") Then
    GUICtrlCreateListViewItem($vlist[$i][0], $visibleprogramlist)
    EndIf
    Next
    EndFunc ;==>vscan
    ;;;;;;;;;;;;;;;;;;;;Hidden;;;;;;;;;;;;;;;
    Func hscan()
    GUICtrlDelete($hiddenprogramlist)
    hlist()
    $hlist = WinList()
    Global $mma = GUICtrlRead(GUICtrlRead($visibleprogramlist))
    For $i = 1 To $hlist[0][0]
    If $hlist[$i][0] <> "" And $hlist[$i][0] <> ($me) And $hlist[$i][0] <> ("AutoIt v3") Then
    Global $mma2 = GUICtrlCreateListViewItem($hlist[$i][0], $hiddenprogramlist)
    EndIf
    Next
    EndFunc ;==>hscan
    Func mma()
    Exit
    EndFunc ;==>mma
    Global $StatusBar = _GUICtrlStatusBar_Create($gui, -1, $defaultstatus)
    ;~ _GUICtrlStatusBar_SetText($StatusBar, "Ready...")
    GUISetState()
    Func vstatusprogress()
    Global $but = GUICtrlRead($vend)
    GUICtrlSetData($vend, "Abbruch...")
    Global $ProgressBar = GUICtrlCreateProgress(390, 408, 190, 30, $PBS_SMOOTH)
    For $i = 0 To 100
    _GUICtrlStatusBar_SetText($StatusBar, "Prozess im Fenster beenden...")
    GUICtrlSetData($ProgressBar, $i)
    Sleep(15)
    Global $m = GUIGetMsg()
    If $m = $vend Then
    GUICtrlDelete($ProgressBar)
    _GUICtrlStatusBar_SetText($StatusBar, "Abbruch...")
    $abort = 0
    $timer = -400
    ExitLoop
    ElseIf $i = 100 Then
    GUICtrlDelete($ProgressBar)
    _GUICtrlStatusBar_SetText($StatusBar, "Auf Resultat warten...")
    $abort = 1
    ExitLoop
    EndIf
    Next
    GUICtrlSetData($vend, $but)
    EndFunc ;==>vstatusprogress
    Func hstatusprogress()
    Global $but = GUICtrlRead($hend)
    GUICtrlSetData($hend, "Abbruch...")
    Global $ProgressBar = GUICtrlCreateProgress(390, 408, 190, 30, $PBS_SMOOTH)
    For $i = 0 To 100
    _GUICtrlStatusBar_SetText($StatusBar, "Prozess im Fenster beenden...")
    GUICtrlSetData($ProgressBar, $i)
    Sleep(15)
    Global $m = GUIGetMsg()
    If $m = $hend Then
    GUICtrlDelete($ProgressBar)
    _GUICtrlStatusBar_SetText($StatusBar, "Abbruch...")
    $abort = 0
    $timer = -400
    ExitLoop
    ElseIf $i = 100 Then
    GUICtrlDelete($ProgressBar)
    _GUICtrlStatusBar_SetText($StatusBar, "Auf Resultat warten...")
    $abort = 1
    ExitLoop
    EndIf
    Next
    GUICtrlSetData($hend, $but)
    EndFunc ;==>hstatusprogress
    Func vpstatusprogress()
    Global $but = GUICtrlRead($vpend)
    GUICtrlSetData($vpend, "Abbruch...")
    Global $ProgressBar = GUICtrlCreateProgress(390, 408, 190, 30, $PBS_SMOOTH)
    For $i = 0 To 100
    _GUICtrlStatusBar_SetText($StatusBar, "Terminating window in progress...")
    GUICtrlSetData($ProgressBar, $i)
    Sleep(15)
    Global $m = GUIGetMsg()
    If $m = $vpend Then
    GUICtrlDelete($ProgressBar)
    _GUICtrlStatusBar_SetText($StatusBar, "Abbruch...")
    $abort = 0
    ExitLoop
    ElseIf $i = 100 Then
    GUICtrlDelete($ProgressBar)
    _GUICtrlStatusBar_SetText($StatusBar, "Auf Resultat warten...")
    $abort = 1
    ExitLoop
    EndIf
    Next
    GUICtrlSetData($vpend, $but)
    EndFunc ;==>vpstatusprogress
    Func hpstatusprogress()
    Global $but = GUICtrlRead($hpend)
    GUICtrlSetData($hpend, "Abbruch...")
    Global $ProgressBar = GUICtrlCreateProgress(390, 408, 190, 30, $PBS_SMOOTH)
    For $i = 0 To 100
    _GUICtrlStatusBar_SetText($StatusBar, "Terminating window in progress...")
    GUICtrlSetData($ProgressBar, $i)
    Sleep(15)
    Global $m = GUIGetMsg()
    If $m = $hpend Then
    GUICtrlDelete($ProgressBar)
    _GUICtrlStatusBar_SetText($StatusBar, "Abbruch...")
    $abort = 0
    ExitLoop
    ElseIf $i = 100 Then
    GUICtrlDelete($ProgressBar)
    _GUICtrlStatusBar_SetText($StatusBar, "Auf Resultat warten...")
    $abort = 1
    ExitLoop
    EndIf
    Next
    GUICtrlSetData($hpend, $but)
    EndFunc ;==>hpstatusprogress
    Func hide()
    GUISetState(@SW_HIDE)
    TrayItemSetState($min, $TRAY_DISABLE)
    TrayItemSetState($max, $tray_enable)
    TrayItemSetState($max, $TRAY_DEFAULT)
    EndFunc ;==>hide
    Func show()
    GUISetState(@SW_SHOW)
    TrayItemSetState($max, $TRAY_DISABLE)
    TrayItemSetState($min, $tray_enable)
    TrayItemSetState($min, $TRAY_DEFAULT)
    EndFunc ;==>show
    Func trayflash()
    TraySetState(4)
    For $flash = 0 To 200
    Global $tray = TrayGetMsg()
    If $tray = $TRAY_EVENT_SECONDARYUP Then
    TraySetState(8)
    ExitLoop
    ElseIf $tray = $TRAY_EVENT_PRIMARYUP Then
    TraySetState(8)
    ExitLoop
    ;~ ElseIf $tray = $max Then
    ;~ TraySetState(8)
    ;~ show()
    ;~ ExitLoop
    EndIf
    Next
    TraySetState(8)
    EndFunc ;==>trayflash
    Func Shutdownprogress()
    Global $but = GUICtrlRead($shutdown)
    GUICtrlSetData($shutdown, "Abbruch...")
    Global $ProgressBar = GUICtrlCreateProgress(390, 408, 190, 30, $PBS_SMOOTH)
    For $i = 0 To 100
    _GUICtrlStatusBar_SetText($StatusBar, "Herunterfahren...")
    GUICtrlSetData($ProgressBar, $i)
    Sleep(40)
    Global $msg = GUIGetMsg()
    If $msg = $shutdown Then
    GUICtrlDelete($ProgressBar)
    _GUICtrlStatusBar_SetText($StatusBar, "Abbruch...")
    $abort = 0
    $timer = -400
    ExitLoop
    ElseIf $i = 100 Then
    GUICtrlDelete($ProgressBar)
    _GUICtrlStatusBar_SetText($StatusBar, "Auf Resultat warten...")
    $abort = 1
    ExitLoop
    EndIf
    Next
    GUICtrlSetData($shutdown, $but)
    EndFunc ;==>Shutdownprogress
    Func restartprogress()
    Global $but = GUICtrlRead($restart)
    GUICtrlSetData($restart, "Abbruch...")
    Global $ProgressBar = GUICtrlCreateProgress(390, 408, 190, 30, $PBS_SMOOTH)
    For $i = 0 To 100
    _GUICtrlStatusBar_SetText($StatusBar, "Neustart...")
    GUICtrlSetData($ProgressBar, $i)
    Sleep(40)
    Global $msg = GUIGetMsg()
    If $msg = $restart Then
    GUICtrlDelete($ProgressBar)
    _GUICtrlStatusBar_SetText($StatusBar, "Abbruch...")
    $abort = 0
    $timer = -400
    ExitLoop
    ElseIf $i = 100 Then
    GUICtrlDelete($ProgressBar)
    _GUICtrlStatusBar_SetText($StatusBar, "Auf Resultat warten...")
    $abort = 1
    ExitLoop
    EndIf
    Next
    GUICtrlSetData($restart, $but)
    EndFunc ;==>restartprogress
    While 1
    $timer = $timer + 1
    If $timer = 1 Then
    _GUICtrlStatusBar_SetText($StatusBar, "Bereit")
    ElseIf $timer = 45 Then
    _GUICtrlStatusBar_SetText($StatusBar, "Bereit.")
    ElseIf $timer = 90 Then
    _GUICtrlStatusBar_SetText($StatusBar, "Bereit..")
    ElseIf $timer = 135 Then
    _GUICtrlStatusBar_SetText($StatusBar, "Bereit...")
    ElseIf $timer = 180 Then
    $timer = 0
    EndIf
    Global $msg = GUIGetMsg()
    Global $tray = TrayGetMsg()
    Global $mem = MemGetStats()
    GUICtrlSetData($membar, $mem[0])
    GUICtrlSetColor($membar, 0xff0000)
    If $memval <> $mem[0] Then
    GUICtrlSetData($memgroup, "Speicherverbrauch : (" & $mem[0] & "%) ")
    $memval = $mem[0]
    EndIf
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    Case $msg = $vscan
    vscan()
    Case $msg = $hscan
    hscan()
    Case $msg = $vend
    Global $mma = GUICtrlRead(GUICtrlRead($visibleprogramlist))
    Global $title = $mma
    ;~ MsgBox(0, "", $title)
    If $mma <> "" Then
    $ok = MsgBox(8192 + 1 + 262144 + 32, "Bestätigen", "Sind Sie sicher, das Sie schließen möchten '" & $title & "'")
    If $ok = 1 Then
    vstatusprogress()
    If $abort = 1 Then
    Global $handelended = WinGetHandle($mma)
    Global $mm = WinGetProcess($mma)
    ProcessSetPriority($mm, 0)
    WinClose($mma)
    Global $1 = WinWaitClose($mma, "", 3)
    Global $yyy = WinGetHandle($mma)
    If $yyy = $handelended Then
    MsgBox(8192 + 262144, $me, """" & $title & """ Noch geöffnet, bitte versuchen Sie den 'Prozess zu beenden'.")
    _GUICtrlStatusBar_SetText($StatusBar, """" & $title & """ Noch geöffnet, bitte versuchen Sie den 'Prozess zu beenden'.")
    vscan()
    If $hlist <> 0 Then hscan()
    $timer = -800
    ElseIf $handelended = "" Then
    MsgBox(8192 + 262144, $me, "Es gibt keine Fenster zu schließen. ", 3)
    _GUICtrlStatusBar_SetText($StatusBar, "Es gibt keine Fenster zu schließen.")
    $timer = -800
    ElseIf $1 = 0 Then
    $yyy = WinGetHandle($mma)
    MsgBox(8192 + 262144, $me, """" & $title & """ Erfolgreich beendet, aber es gibt Fenster mit dem gleichen Namen , welche noch geöffnet sind! ", 3)
    _GUICtrlStatusBar_SetText($StatusBar, """" & $title & """ Erfolgreich beendet, aber es gibt Fenster mit dem gleichen Namen , welche noch geöffnet sind!")
    vscan()
    If $hlist <> 0 Then hscan()
    $timer = -800
    ;activate()
    ElseIf $yyy <> $handelended Then
    If $hlist <> 0 Then hscan()
    vscan()
    _GUICtrlStatusBar_SetText($StatusBar, """" & $title & """ Erfolgreich beendet.")
    $timer = -800
    EndIf
    EndIf
    EndIf
    EndIf
    Case $msg = $vpend
    $mma = GUICtrlRead(GUICtrlRead($visibleprogramlist))
    $title = $mma
    If $mma <> "" Then
    $ok = MsgBox(8192 + 1 + 262144 + 32, "Bestätigen", "Sind Sie sicher, dass Sie dies beenden '" & $title & "'", 3)
    If $ok = 1 Then
    vpstatusprogress()
    If $abort = 1 Then
    $handelended = WinGetHandle($mma)
    $mm = WinGetProcess($mma)
    ProcessSetPriority($mm, 0)
    ProcessClose($mm)
    $1 = WinWaitClose($mma, "", 3)
    $yyy = WinGetHandle($mma)
    If $1 = 0 Then
    MsgBox(8192 + 262144, $me, """" & $title & """ Erfolgreich beendet, aber es gibt Fenster mit dem gleichen Namen , welche noch geöffnet sind!", 3)
    _GUICtrlStatusBar_SetText($StatusBar, """" & $title & """ Erfolgreich beendet, aber es gibt Fenster mit dem gleichen Namen , welche noch geöffnet sind!")
    vscan()
    If $hlist <> 0 Then hscan()
    $timer = -800
    ;activate()
    ElseIf $yyy <> $handelended Then
    vscan()
    If $hlist <> 0 Then hscan()
    _GUICtrlStatusBar_SetText($StatusBar, """" & $title & """ Erfolgreich beendet..")
    $timer = -800
    EndIf
    EndIf
    EndIf
    EndIf
    Case $msg = $hend
    $mma = GUICtrlRead(GUICtrlRead($hiddenprogramlist))
    $title = $mma
    If $mma <> "" Then
    $ok = MsgBox(8192 + 1 + 262144 + 32, "Bestätigung", "Sind Sie sicher, dass Sie dies beenden '" & $title & "' ", 4)
    If $ok = 1 Then
    hstatusprogress()
    If $abort = 1 Then
    $handelended = WinGetHandle($mma)
    $mm = WinGetProcess($mma)
    ProcessSetPriority($mm, 0)
    WinClose($mma)
    $1 = WinWaitClose($mma, "", 3)
    $yyy = WinGetHandle($mma)
    If $yyy = $handelended Then
    MsgBox(8192 + 262144, $me, """" & $title & """ Noch geöffnet versuchen Sie 'Prozess beenden'. ", 3)
    _GUICtrlStatusBar_SetText($StatusBar, """" & $title & """ Noch geöffnet versuchen Sie 'Prozess beenden'.")
    $timer = -800
    ElseIf $handelended = "" Then
    MsgBox(8192 + 262144, $me, "Es gibt keine Fenster zu schließen. ", 3)
    _GUICtrlStatusBar_SetText($StatusBar, "Es gibt keine Fenster zu schließen.")
    $timer = -800
    ElseIf $1 = 0 Then
    $yyy = WinGetHandle($mma)
    MsgBox(8192 + 262144, $me, """" & $title & """ Erfolgreich beendet, aber es gibt Fenster mit dem gleichen Namen , welche noch geöffnet sind! ", 3)
    _GUICtrlStatusBar_SetText($StatusBar, """" & $title & """ Erfolgreich beendet, aber es gibt Fenster mit dem gleichen Namen , welche noch geöffnet sind!")
    hscan()
    If $vlist <> 0 Then vscan()
    $timer = -800
    ElseIf $yyy <> $handelended Then
    hscan()
    If $vlist <> 0 Then vscan()
    _GUICtrlStatusBar_SetText($StatusBar, """" & $title & """ Erfolgreich beendet.")
    $timer = -800
    EndIf
    EndIf
    EndIf
    EndIf
    Case $msg = $hpend
    $mma = GUICtrlRead(GUICtrlRead($hiddenprogramlist))
    $title = $mma
    If $mma <> "" Then
    $ok = MsgBox(8192 + 1 + 262144 + 32, "Bestätigung", "Sind Sie sicher, dass Sie dies beenden '" & $title & "'", 3)
    If $ok = 1 Then
    hpstatusprogress()
    If $abort = 1 Then
    $handelended = WinGetHandle($mma)
    $mm = WinGetProcess($mma)
    ProcessSetPriority($mm, 0)
    ProcessClose($mm)
    $1 = WinWaitClose($mma, "", 3)
    $yyy = WinGetHandle($mma)
    If $1 = 0 Then
    MsgBox(8192 + 262144, $me, """" & $title & """ Erfolgreich beendet, aber es gibt Fenster mit dem gleichen Namen , welche noch geöffnet sind! ", 3)
    _GUICtrlStatusBar_SetText($StatusBar, """" & $title & """ Erfolgreich beendet, aber es gibt Fenster mit dem gleichen Namen , welche noch geöffnet sind!")
    hscan()
    If $vlist <> 0 Then vscan()
    $timer = -800
    ;activate()
    ElseIf $yyy <> $handelended Then
    hscan()
    If $vlist <> 0 Then vscan()
    _GUICtrlStatusBar_SetText($StatusBar, """" & $title & """ Erfolgreich beendet.")
    $timer = -800
    EndIf
    EndIf
    EndIf
    EndIf
    Case $msg = $vshow
    $mma = GUICtrlRead(GUICtrlRead($visibleprogramlist))
    WinSetState($mma, "", @SW_SHOW)
    WinActivate($mma)
    Case $msg = $hshow
    $mma = GUICtrlRead(GUICtrlRead($hiddenprogramlist))
    WinSetState($mma, "", @SW_SHOW)
    WinActivate($mma)
    Case $msg = $vhide
    $mma = GUICtrlRead(GUICtrlRead($visibleprogramlist))
    WinSetState($mma, "", @SW_HIDE)
    Case $msg = $hhide
    $mma = GUICtrlRead(GUICtrlRead($hiddenprogramlist))
    WinSetState($mma, "", @SW_HIDE)
    Case $msg = $vclear
    If $vlist <> 0 Then
    GUICtrlDelete($visibleprogramlist)
    $vlist = 0
    vlist()
    EndIf
    Case $msg = $hclear
    If $hlist <> 0 Then
    GUICtrlDelete($hiddenprogramlist)
    $hlist = 0
    hlist()
    EndIf
    Case $msg = $sys
    $ok = MsgBox(8192 + 1 + 262144 + 32, "Bestätigung", "Sind Sie sicher, dass Sie Systemeigenschaften starten wollen? ", 3)
    If $ok = 1 Then
    ;~ Run("sysdm.cpl",@SystemDir&"\")
    Run(@ComSpec & " /c " & 'sysdm.cpl', "", @SW_HIDE)
    WinWaitActive("Systemeigenschaften")
    ProcessClose("cmd.exe")
    EndIf
    Case $msg = $rstrui
    $ok = MsgBox(8192 + 1 + 262144 + 32, "Bestätigung", "Wollen Sie jetzt die Systemwiederherstellung starten? ,3")
    If $ok = 1 Then
    ShellExecute("rstrui.exe", "", @SystemDir & "\restore\")
    EndIf
    Case $msg = $msconfig
    $ok = MsgBox(8192 + 1 + 262144 + 32, "Bestätigung", "Wollen Sie jetzt die SystemTools starten? ", 3)
    If $ok = 1 Then
    ShellExecute("msconfig")
    EndIf
    Case $msg = $sfc
    $ok = MsgBox(8192 + 1 + 262144 + 32, "Bestätigung", "Wollen Sie jetzt die Dateiüberprüfung starten? ", 3)
    If $ok = 1 Then
    Global $sfcok = MsgBox(8192 + 1 + 262144 + 32, "Bestätigung", "Um System-Datei überprüfen zu können muss WinXP SP2 CD, bei WinXP SP2-CD eingelegt werden und OK gedrückt werden. ", 4)
    If $sfcok = 1 Then
    Run("sfc /scannow")
    EndIf
    EndIf
    Case $msg = $regedit
    $ok = MsgBox(8192 + 1 + 262144 + 32, "Bestätigung", "Wollen Sie jetzt den Registry-Editor starten? ", 3, $WS_CHILD)
    If $ok = 1 Then
    ShellExecute("regedit")
    EndIf
    Case $msg = $tmgr
    $ok = MsgBox(8192 + 1 + 262144 + 32, "Bestätigung", "Wollen Sie jetzt den TaskManager starten? ,3")
    If $ok = 1 Then
    ShellExecute("taskmgr")
    EndIf
    Case $msg = $compmgmt
    $ok = MsgBox(8192 + 1 + 262144 + 32, "Bestätigung", "Wollen Sie jetzt den Computer Management starten? ", 3)
    If $ok = 1 Then
    ShellExecute("compmgmt.msc")
    EndIf
    Case $msg = $eventvwr
    $ok = MsgBox(8192 + 1 + 262144 + 32, "Bestätigung", "Wollen Sie jetzt die Ereignisanzeige starten? ", 3)
    If $ok = 1 Then
    ShellExecute("Eventvwr.msc")
    EndIf
    Case $msg = $shutdown
    Global $shutdownok = MsgBox(8192 + 4 + 262144 + 48, "Herunterfahren erzwingen", "Wollen Sie jetzt den Computer herunterfahren? ", 3)
    If $shutdownok = 6 Then
    Shutdownprogress()
    If $abort = 1 Then
    Shutdown(17)
    EndIf
    EndIf
    Case $msg = $restart
    Global $restartok = MsgBox(8192 + 4 + 262144 + 48, "Neustart erzwingen", "Wollen Sie jetzt den Computer Neustarten? ,3")
    If $restartok = 6 Then
    restartprogress()
    If $abort = 1 Then
    Shutdown(18)
    EndIf
    EndIf
    Case $tray = $aboutitem
    about()
    Case $msg = $menu_about
    about()
    Case $tray = $exititem
    Exit
    Case $tray = $tshutdown
    $shutdownok = MsgBox(8192 + 4 + 262144 + 48, "Herunterfahren erzwingen", "Wollen Sie jetzt den Computer zwingen sich herunterzufahren? ", 3)
    If $shutdownok = 6 Then
    Shutdown(5)
    Else
    EndIf
    Case $tray = $trestart
    $restartok = MsgBox(8192 + 4 + 262144 + 48, "Neustart erzwingen", "Wollen Sie jetzt den Computer zwingen sich neuzustarten? ", 3)
    If $restartok = 6 Then
    Shutdown(6)
    Else
    EndIf
    Case $tray = $min
    hide()
    trayflash()
    Case $tray = $max
    show()
    Case $msg = $viewstatus
    If BitAND(GUICtrlRead($viewstatus), $GUI_CHECKED) = $GUI_CHECKED Then
    GUICtrlSetState($viewstatus, $GUI_UNCHECKED)
    _GUICtrlStatusBar_ShowHide($StatusBar, @SW_HIDE)
    Else
    GUICtrlSetState($viewstatus, $GUI_CHECKED)
    _GUICtrlStatusBar_ShowHide($StatusBar, @SW_SHOW)
    EndIf
    Case $msg = $menu_exit
    Exit
    Case $msg = $menu_hide
    hide()
    trayflash()
    EndSelect
    WEnd
    Func background($control)
    Local $guiname, $width, $height, $hGraphic, $hBitmap1, $hImage1, $hPen2, $hBMP1, $hImage, $hwd, $hBitmap
    _GDIPlus_Startup()
    $hwd = GUICtrlGetHandle($control)
    $guiname = _WinAPI_GetParent($hwd)
    $width = _WinAPI_GetClientWidth($hwd)
    $height = _WinAPI_GetClientHeight($hwd)
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hwd)
    $hBitmap1 = _GDIPlus_BitmapCreateFromGraphics($width, $height, $hGraphic)
    $hImage1 = _GDIPlus_ImageGetGraphicsContext($hBitmap1)
    _GDIPlus_GraphicsSetSmoothingMode($hGraphic, 4)
    For $p = 0 To $width Step 1
    $hPen2 = _GDIPlus_PenCreate(BitOR(0x32000000, 0x000000), 1)
    _GDIPlus_GraphicsDrawLine($hImage1, $p, 1, $p, $height, $hPen2)
    _GDIPlus_PenDispose($hPen2)
    Next
    _GDIPlus_GraphicsSetSmoothingMode($hImage1, 2)
    $hBMP1 = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap1)
    _WinAPI_DeleteObject(GUICtrlSendMsg($control, 0x0172, 0, $hBMP1))
    _GDIPlus_GraphicsDispose($hImage1)
    _WinAPI_DeleteObject($hBMP1)
    _GDIPlus_BitmapDispose($hBitmap1)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_Shutdown()
    EndFunc ;==>background
    Func _ControlToRoundedRectangle($aControl, $X1, $Y1, $X2, $Y2, $X3)
    Local $l
    Local $handle = GUICtrlGetHandle($aControl)
    $l = DllCall("gdi32.dll", "int", "CreateRoundRectRgn", "int", $X1, "int", $Y1, "int", $X2, "int", $Y2, "int", $X3, "int", $X3)
    DllCall("user32.dll", "int", "SetWindowRgn", "hwnd", $handle, "int", $l[0], "int", True)
    EndFunc ;==>_ControlToRoundedRectangle
    Func startbmp($iWidth, $iHeight)
    Local $hBitmap, $hImage
    ;Create a new bitmap, this way the original opened png is left unchanged
    $hBitmap = _GDIPlus_GraphicsCreateFromHWND(WinGetHandle($gui))
    $hImage = _GDIPlus_BitmapCreateFromGraphics($iWidth, $iHeight, $hBitmap)
    _WinAPI_DeleteObject($hBitmap)
    Return $hImage
    EndFunc ;==>startbmp

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • Dies

    Wenn du schon ein Skript einsellst sollte dieses, bis auf den Fehler, auch lauffähig sein:

    gilt leider immer noch, denn

    jetzt ist allerdings deutlich zu erkennen:

    das guisetstate fehlt scheinbar... ausserdem sehe ich keine Endlossschleife, die das Programm am Leben halten würde

    mfg autoBert

  • Doch mittlerweile seh ich ein guisetstate... irgendwo zwischen den Funktionen versteckt. Recht weit unten findet sich dann auch noch eine Endlosschleife im globalen Kontext. Aber ganz ehrlich, der Quellcode ist so durcheinander und unübersichtlich, dass es mich nicht wundert wenn da massenhaft Fehler schlummern. Mir persönlich ist es jedenfalls zuviel Arbeit mich da durchzuwühlen und den Fehler zu suchen. Dazu kommt wie angesprochen noch, dass nachwievor Funktionen fehlen um das ganze auszuführen.

  • Doch mittlerweile seh ich ein guisetstate... irgendwo zwischen den Funktionen versteckt. Recht weit unten findet sich dann auch noch eine Endlosschleife im globalen Kontext.


    Dank dir habe ich jetzt auch beides gefunden. Da sich in der Endlosschleife trotz

    [autoit]

    Opt('GUIOnEventMode', 1)

    [/autoit]

    GuiGetMsg befindet rate ich dem TE sich mit den Grundlagen speziell 'GUI-Referenz - GUI-Konzepte' zu beschägtigen.

    mfg autoBert

  • Um deine ganzen Buttons zu erstellen (wovon du jede Menge hast wie es aussieht) kannst du simple mit ner For Arbeiten

    Spoiler anzeigen
    [autoit]


    #include <GuiConstants.au3>
    #include <Constants.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>

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

    Global $BNames[5] = ['Button 0','Button 1','Button 2','Button 3','Button 4']
    Global $BCoord[5] = [10,80,150,220,290]

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

    $hGui = GUICreate('Demo Gui',360,200,-1,-1)
    For $i = 0 To UBound($BNames)-1
    $BNames[$i] = GUICtrlCreateButton($BNames[$i],$BCoord[$i],10,60,20)
    Next

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

    GUISetState(@SW_SHOW,$hGui)

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

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $BNames[0]
    MsgBox(0,'MsgBox',$BNames[0] & ' Wurde Geklickt')
    EndSwitch
    WEnd

    [/autoit]


    Der aufbau einer Gui sollte auch so sein, ansonnsten hast du wie schon gesagt wurde, einen total unübersichtlichen Code.
    Ich geb ehrlich zu dass ich da kaum dirchblicke und sollange sich der Code nicht ohne Error ausführen lässt, wird sich da wohl keiner freiwillig durch den Code wühlen ^^