gui mit whille schleife

  • haloo ich habe mal ne frge in meiner gui möchte ich über die buttonfarbe den zustand an aus anzeigen das ganz wolte
    ich mit mi einer while-schleife + prozess exit machen leider funkt es so nicht aber wiso

    Spoiler anzeigen


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


    $Form1 = GUICreate("", 633, 447, 193, 125)
    $Button1 = GUICtrlCreateButton("1", 104, 64, 137, 105, 0)
    $Button2 = GUICtrlCreateButton("2", 400, 64, 137, 105, 0)
    $Button3 = GUICtrlCreateButton("3", 104, 232, 137, 105, 0)
    $Button4 = GUICtrlCreateButton("4", 400, 232, 137, 105, 0)
    $Button5 = GUICtrlCreateButton("Exit", 272, 400, 89, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    While 1
    If ProcessExists("Bat_To_Exe_Converter.exe")Then
    GUICtrlSetColor ($Button1,0xff0000)
    EndIf
    WEnd
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    Run ( "C:\Dokumente und Einstellungen\Administrator\Desktop/Bat_To_Exe_Converter.exe")
    Case $Button2
    ;bla
    Case $Button3
    ;bla
    Case $Button4
    ;bla
    Case $Button5
    Exit

    EndSwitch
    WEnd


    danke für hilfe

    Einmal editiert, zuletzt von fussballgott (14. Januar 2009 um 18:45)

    • Offizieller Beitrag

    Zum Einen setzt du die Textfarbe (du willst doch aber sicher den Button selbst färben -> GUICtrlSetBkColor), zum Anderen setzt du die Farbe ständig (solange der Prozess existiert). Besser, eine Variable, die den Status aufnimmt, und nur wenn der Status sich ändert, wird auch die Farbe geändert.

  • Und drttens hast du ne Endlos-Schleife gebaut weil du den Check in ne Extra While-Schleife gesetzt hast.

    [autoit]

    #EndRegion ### END Koda GUI section ###
    While 1
    $durchlauf=$durchlauf +1
    If ProcessExists("explorer.exe")AND $durchlauf = 500 Then
    GUICtrlSetColor ($Button1,0xff0000)
    $durchlauf = 1
    EndIf
    ;WEnd
    ;While 1
    $nMsg = GUIGetMsg()

    [/autoit]
  • Hier so geht es:

    Spoiler anzeigen
    [autoit]

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

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

    $Form1 = GUICreate("", 633, 447, 193, 125)
    $Button1 = GUICtrlCreateButton("1", 104, 64, 137, 105, 0)
    $Button2 = GUICtrlCreateButton("2", 400, 64, 137, 105, 0)
    $Button3 = GUICtrlCreateButton("3", 104, 232, 137, 105, 0)
    $Button4 = GUICtrlCreateButton("4", 400, 232, 137, 105, 0)
    $Button5 = GUICtrlCreateButton("Exit", 272, 400, 89, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    $Status = -1
    While 1
    $Exists = ProcessExists("Bat_To_Exe_Converter.exe")
    If $Status <> $Exists Then
    If $Exists = 0 Then
    GUICtrlSetBKColor ($Button1,0xff0000)
    $Status = $Exists
    EndIf
    EndIf
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    Run ( "C:\Dokumente und Einstellungen\Administrator\Desktop/Bat_To_Exe_Converter.exe")
    Case $Button2
    ;bla
    Case $Button3
    ;bla
    Case $Button4
    ;bla
    Case $Button5
    Exit

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

    EndSwitch
    WEnd

    [/autoit]

    mfg. Jam00

    • Offizieller Beitrag

    Hier mal ein allg. Bsp.

    [autoit]

    #include <GUIConstants.au3>

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

    Global $stat = False
    $gui1 = GUICreate('GUI 1')
    $btn1 = GUICtrlCreateButton('Starte Help', 10, 20, 100, 20)
    GUICtrlSetBkColor($btn1, 0x00FF00)

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

    GUISetState(@SW_SHOW, $gui1)

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

    While 1
    $msg = GUIGetMsg()
    If $stat Then
    If Not ProcessExists('AutoIt3Help.exe') Then
    GUICtrlSetBkColor($btn1, 0x00FF00)
    $stat = False
    EndIf
    Else
    If ProcessExists('AutoIt3Help.exe') Then
    GUICtrlSetBkColor($btn1, 0xFA8072)
    $stat = True
    EndIf
    EndIf
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $btn1
    ShellExecute(StringReplace(@AutoItExe, 'autoit3.exe', 'AutoIt3Help.exe'))
    EndSwitch
    WEnd

    [/autoit]
  • danke für eure schnelle hilfe werd mich gleich mit aus einendersetzen

    Edit BugFix: ;) will keinen neuen Post anhängen: Hab mein Bsp. korrigiert, nun flackert es auch nicht mehr.

    Einmal editiert, zuletzt von BugFix (14. Januar 2009 um 18:23)

    • Offizieller Beitrag

    Eines noch, es ist übersichtlicher, wenn du das in eine Funktion auslagerst.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    Global $stat = 0
    $gui1 = GUICreate('GUI 1')
    $btn1 = GUICtrlCreateButton('Starte Help', 10, 20, 100, 20)
    GUICtrlSetBkColor($btn1, 0x00FF00)

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

    GUISetState(@SW_SHOW, $gui1)

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

    While 1
    $msg = GUIGetMsg()
    $pid = ProcessExists('AutoIt3Help.exe')
    If $stat <> $pid Then $stat = _ToggleBtnCol($btn1, $pid)
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $btn1
    If $stat Then
    ProcessClose($stat)
    Else
    ShellExecute(StringReplace(@AutoItExe, 'autoit3.exe', 'AutoIt3Help.exe'))
    EndIf
    EndSwitch
    WEnd

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

    Func _ToggleBtnCol($ID, $PID)
    If $PID Then
    GUICtrlSetBkColor($ID, 0xFA8072)
    ControlSetText($gui1, '', $ID, 'Beende Help')
    Else
    GUICtrlSetBkColor($ID, 0x00FF00)
    ControlSetText($gui1, '', $ID, 'Starte Help')
    EndIf
    Return $PID
    EndFunc

    [/autoit]