Gui und Funktionen per Button abrufen

  • Hallo, ich möchte ein wenig mit dem Erstellen von GUIs anfangen.
    Ich erstelle erstmal etwas einfaches, nur ich habe ein Problem und zwar, wenn ich auf Start klicke, macht er was er auch machen soll, wenn ich auf Stopp klicke, führt er beide Funktionen aus. Wenn ich das mit Events mache, dann bekomm ich das mit dem GUI schließen und dem Verlassen der Schelife nicht hin.

    Hilfe wäre echt nice :D [Im Script sind jetzt weder Events noch dieses Switch, Case, Endswitch]

    [autoit]

    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <IE.au3>

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

    #Region ### Variablen
    $F1=IniRead("Srxl","1","Name","")
    $T1=IniRead("Srxl","1","T1","")
    $P1=IniRead("Srxl","1","P1","")
    $T2=IniRead("Srxl","1","T2","")
    $P2=IniRead("Srxl","1","P2","")
    $T3=IniRead("Srxl","1","T3","")
    $P3=IniRead("Srxl","1","P3","")
    $T4=IniRead("Srxl","1","T4","")
    $P4=IniRead("Srxl","1","P4","")
    $T5=IniRead("Srxl","1","T5","")
    $P5=IniRead("Srxl","1","P5","")
    #EndRegion ### Ende

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

    #Region ### START Koda GUI section ### Form=c:\users\kingraph\desktop\koda_1.7.0.1\forms\form2.kxf
    $Form1 = GUICreate("Daten", 249, 267, 258, 150)
    $Name = GUICtrlCreateInput($F1, 56, 8, 129, 21)
    $Ta1 = GUICtrlCreateInput($T1, 8, 40, 105, 21)
    $Pa1 = GUICtrlCreateInput($P1, 136, 40, 105, 21)
    $Ta2 = GUICtrlCreateInput($T2, 8, 72, 105, 21)
    $Pa2 = GUICtrlCreateInput($P2, 136, 72, 105, 21)
    $Ta3 = GUICtrlCreateInput($T3, 8, 104, 105, 21)
    $Pa3 = GUICtrlCreateInput($P3, 136, 104, 105, 21)
    $Ta4 = GUICtrlCreateInput($T4, 8, 136, 105, 21)
    $Pa4 = GUICtrlCreateInput($P4, 136, 136, 105, 21)
    $Ta5 = GUICtrlCreateInput($T5, 8, 168, 105, 21)
    $Pa5 = GUICtrlCreateInput($P5, 136, 168, 105, 21)
    $Start = GUICtrlCreateButton("Start", 16, 200, 65, 33, 0)
    $Stopp = GUICtrlCreateButton("Stopp", 168, 200, 65, 33, 0)
    $Speichern = GUICtrlCreateButton("Speichern", 96, 200, 57, 33, 0)
    $Label1 = GUICtrlCreateLabel("Link", 0, 248, 170, 17)
    $Button1 = GUICtrlCreateButton("Clickme", 176, 240, 49, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    Func Button1Click()
    #Region ### START Koda GUI section ### Form=
    $help = GUICreate("help", 218, 98, 193, 125)
    $Inputx = GUICtrlCreateInput("http://elitepvpers.de/", 16, 40, 185, 21)
    $Label1 = GUICtrlCreateLabel("Einfach kopieren oder auf Internet klicken", 8, 8, 202, 17)
    $Button2 = GUICtrlCreateButton("Internet", 48, 72, 113, 17, 0)
    #EndRegion ### END Koda GUI section ###
    ; beim schließen soll er nur das GUI "help" schließen
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    GUISetOnEvent($GUI_EVENT_CLOSE, "help")
    Case $Button2
    _IECreate("http://google.de/")
    sleep(200)
    Exit
    EndSwitch
    WEnd
    EndFunc
    Func Form1Close()
    ;Exit
    EndFunc
    Func SpeichernClick()
    IniWrite("Srxl","1","Name",GUICtrlRead($Name))
    IniWrite("Srxl","1","Ta1",GUICtrlRead($Ta1))
    IniWrite("Srxl","1","Pa1",GUICtrlRead($Pa1))
    IniWrite("Srxl","1","Ta2",GUICtrlRead($Ta2))
    IniWrite("Srxl","1","Pa2",GUICtrlRead($Pa2))
    IniWrite("Srxl","1","Ta3",GUICtrlRead($Ta3))
    IniWrite("Srxl","1","Pa3",GUICtrlRead($Pa3))
    IniWrite("Srxl","1","Ta4",GUICtrlRead($Ta4))
    IniWrite("Srxl","1","Pa4",GUICtrlRead($Pa4))
    IniWrite("Srxl","1","Ta5",GUICtrlRead($Ta5))
    IniWrite("Srxl","1","Pa5",GUICtrlRead($Pa5))
    EndFunc

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

    Func StartClick()
    while 1 ;was er wiederholen soll, wenn man auf Start klickt
    mousemove(122,900)
    sleep(20000)
    MouseClick("left",1200,300)
    sleep(100)
    send("{enter}")
    sleep(5000)
    WEnd

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

    Func StoppClick() ;bei Stopp soll er eine Pause machen, also schlafen
    while 1
    sleep(200)
    WEnd
    EndFunc

    [/autoit]
  • Erstmal fehlt hinter dem
    Func SpeichernClick()
    das EndFunc !
    Also so:

    [autoit]

    Func StartClick()
    ;...
    EndFunc

    [/autoit]

    Und dann zu dem Button.
    Das Problem ist, dass die Funktion in der Schleife unendlich lang läuft !
    Du musst irgendwie "Exitloop" einbringen.
    Damit die Funktion beendet wird und die neue gestarte werden kann.

    Ich kann dir leider mit dem ExitLoop nicht helfen.
    Nur mir dem EndFunc ^^

  • Um es nur zu pausieren, würde ich eine Hilfsvariable einbauen :P

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <IE.au3>

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

    #Region ### Variablen
    $F1=IniRead("Srxl","1","Name","")
    $T1=IniRead("Srxl","1","T1","")
    $P1=IniRead("Srxl","1","P1","")
    $T2=IniRead("Srxl","1","T2","")
    $P2=IniRead("Srxl","1","P2","")
    $T3=IniRead("Srxl","1","T3","")
    $P3=IniRead("Srxl","1","P3","")
    $T4=IniRead("Srxl","1","T4","")
    $P4=IniRead("Srxl","1","P4","")
    $T5=IniRead("Srxl","1","T5","")
    $P5=IniRead("Srxl","1","P5","")
    $loopvari = 1
    #EndRegion ### Ende

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

    #Region ### START Koda GUI section ### Form=c:\users\kingraph\desktop\koda_1.7.0.1\forms\form2.kxf
    $Form1 = GUICreate("Daten", 249, 267, 258, 150)
    $Name = GUICtrlCreateInput($F1, 56, 8, 129, 21)
    $Ta1 = GUICtrlCreateInput($T1, 8, 40, 105, 21)
    $Pa1 = GUICtrlCreateInput($P1, 136, 40, 105, 21)
    $Ta2 = GUICtrlCreateInput($T2, 8, 72, 105, 21)
    $Pa2 = GUICtrlCreateInput($P2, 136, 72, 105, 21)
    $Ta3 = GUICtrlCreateInput($T3, 8, 104, 105, 21)
    $Pa3 = GUICtrlCreateInput($P3, 136, 104, 105, 21)
    $Ta4 = GUICtrlCreateInput($T4, 8, 136, 105, 21)
    $Pa4 = GUICtrlCreateInput($P4, 136, 136, 105, 21)
    $Ta5 = GUICtrlCreateInput($T5, 8, 168, 105, 21)
    $Pa5 = GUICtrlCreateInput($P5, 136, 168, 105, 21)
    $Start = GUICtrlCreateButton("Start", 16, 200, 65, 33, 0)
    $Stopp = GUICtrlCreateButton("Stopp", 168, 200, 65, 33, 0)
    $Speichern = GUICtrlCreateButton("Speichern", 96, 200, 57, 33, 0)
    $Label1 = GUICtrlCreateLabel("Link", 0, 248, 170, 17)
    $Button1 = GUICtrlCreateButton("Clickme", 176, 240, 49, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    Func Button1Click()
    #Region ### START Koda GUI section ### Form=
    $help = GUICreate("help", 218, 98, 193, 125)
    $Inputx = GUICtrlCreateInput("http://elitepvpers.de/", 16, 40, 185, 21)
    $Label1 = GUICtrlCreateLabel("Einfach kopieren oder auf Internet klicken", 8, 8, 202, 17)
    $Button2 = GUICtrlCreateButton("Internet", 48, 72, 113, 17, 0)
    #EndRegion ### END Koda GUI section ###
    ; beim schließen soll er nur das GUI "help" schließen
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    ;~ GUISetOnEvent($GUI_EVENT_CLOSE, "help")
    Case $Button2
    _IECreate("http://google.de/")
    sleep(200)
    Exit
    EndSwitch
    WEnd
    EndFunc
    Func Form1Close()
    ;Exit
    EndFunc
    Func SpeichernClick()
    IniWrite("Srxl","1","Name",GUICtrlRead($Name))
    IniWrite("Srxl","1","Ta1",GUICtrlRead($Ta1))
    IniWrite("Srxl","1","Pa1",GUICtrlRead($Pa1))
    IniWrite("Srxl","1","Ta2",GUICtrlRead($Ta2))
    IniWrite("Srxl","1","Pa2",GUICtrlRead($Pa2))
    IniWrite("Srxl","1","Ta3",GUICtrlRead($Ta3))
    IniWrite("Srxl","1","Pa3",GUICtrlRead($Pa3))
    IniWrite("Srxl","1","Ta4",GUICtrlRead($Ta4))
    IniWrite("Srxl","1","Pa4",GUICtrlRead($Pa4))
    IniWrite("Srxl","1","Ta5",GUICtrlRead($Ta5))
    IniWrite("Srxl","1","Pa5",GUICtrlRead($Pa5))
    EndFunc

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

    Func StartClick()
    $loopvari = 1
    while($loopvari = 1) ;was er wiederholen soll, wenn man auf Start klickt
    mousemove(122,900)
    sleep(20000)
    MouseClick("left",1200,300)
    sleep(100)
    send("{enter}")
    sleep(5000)
    WEnd
    EndFunc

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

    Func StoppClick() ;bei Stopp soll er eine Pause machen, also schlafen
    $loopvari = 0
    Sleep(200)
    WEnd
    EndFunc

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

    ;~ GUISetOnEvent($GUI_EVENT_CLOSE, "help")

    [/autoit]


    Musste ich mal commenten, da des irgendwie nen Fehler is :P

  • Obwohl ich weiß, dass es sich um einen Bot handelt helf ich trotzdem mal.

    Ich musste eine eigene Sleep-Funktion erstellen, da du ja trotzdem auf GUI-Aktionen reagieren möchtest...
    (normalerweise PAUSIERT sleep() das skript - deswegen ist es hilfreich mit timern zu arbeiten)

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <IE.au3>

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

    #Region ### Variablen
    $F1 = IniRead("Srxl", "1", "Name", "")
    $T1 = IniRead("Srxl", "1", "T1", "")
    $P1 = IniRead("Srxl", "1", "P1", "")
    $T2 = IniRead("Srxl", "1", "T2", "")
    $P2 = IniRead("Srxl", "1", "P2", "")
    $T3 = IniRead("Srxl", "1", "T3", "")
    $P3 = IniRead("Srxl", "1", "P3", "")
    $T4 = IniRead("Srxl", "1", "T4", "")
    $P4 = IniRead("Srxl", "1", "P4", "")
    $T5 = IniRead("Srxl", "1", "T5", "")
    $P5 = IniRead("Srxl", "1", "P5", "")
    $go = False
    #EndRegion ### Variablen

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

    #Region ### START Koda GUI section ### Form=c:\users\kingraph\desktop\koda_1.7.0.1\forms\form2.kxf
    $Form1 = GUICreate("Daten", 249, 267, 258, 150)
    $Name = GUICtrlCreateInput($F1, 56, 8, 129, 21)
    $Ta1 = GUICtrlCreateInput($T1, 8, 40, 105, 21)
    $Pa1 = GUICtrlCreateInput($P1, 136, 40, 105, 21)
    $Ta2 = GUICtrlCreateInput($T2, 8, 72, 105, 21)
    $Pa2 = GUICtrlCreateInput($P2, 136, 72, 105, 21)
    $Ta3 = GUICtrlCreateInput($T3, 8, 104, 105, 21)
    $Pa3 = GUICtrlCreateInput($P3, 136, 104, 105, 21)
    $Ta4 = GUICtrlCreateInput($T4, 8, 136, 105, 21)
    $Pa4 = GUICtrlCreateInput($P4, 136, 136, 105, 21)
    $Ta5 = GUICtrlCreateInput($T5, 8, 168, 105, 21)
    $Pa5 = GUICtrlCreateInput($P5, 136, 168, 105, 21)
    $Start = GUICtrlCreateButton("Start", 16, 200, 65, 33, 0)
    $Stopp = GUICtrlCreateButton("Stopp", 168, 200, 65, 33, 0)
    GUICtrlSetState(-1,$GUI_DISABLE)
    $Speichern = GUICtrlCreateButton("Speichern", 96, 200, 57, 33, 0)
    $Label1 = GUICtrlCreateLabel("Link", 0, 248, 170, 17)
    $Hilfe = GUICtrlCreateButton("Hilfe", 176, 240, 49, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    #Region ### START Koda GUI section ### Form=
    $help = GUICreate("help", 218, 98, 193, 125)
    $Inputx = GUICtrlCreateInput("http://elitepvpers.de/", 16, 40, 185, 21)
    $Label1 = GUICtrlCreateLabel("Einfach kopieren oder auf Internet klicken", 8, 8, 202, 17)
    $Button2 = GUICtrlCreateButton("Internet", 48, 72, 113, 17, 0)
    #EndRegion ### END Koda GUI section ###

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

    ; beim schließen soll er nur das GUI "help" schließen
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Start
    $go = True
    StartClick()
    Case $Hilfe
    _help()
    EndSwitch
    WEnd

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

    Func _help()
    GUISetState(@SW_DISABLE,$Form1)
    GUISetState(@SW_SHOW,$help)
    While 1
    $nHMsg = GUIGetMsg()
    Switch $nHMsg
    Case $GUI_EVENT_CLOSE
    GUISetState(@SW_ENABLE,$Form1)
    GUISetState(@SW_HIDE,$help)
    ExitLoop
    Case $Button2
    _IECreate("http://elitepvpers.de/")
    Sleep(200)
    GUISetState(@SW_ENABLE,$Form1)
    GUISetState(@SW_HIDE,$help)
    EndSwitch
    WEnd
    EndFunc ;==>help
    Func SpeichernClick()
    IniWrite("Srxl", "1", "Name", GUICtrlRead($Name))
    IniWrite("Srxl", "1", "Ta1", GUICtrlRead($Ta1))
    IniWrite("Srxl", "1", "Pa1", GUICtrlRead($Pa1))
    IniWrite("Srxl", "1", "Ta2", GUICtrlRead($Ta2))
    IniWrite("Srxl", "1", "Pa2", GUICtrlRead($Pa2))
    IniWrite("Srxl", "1", "Ta3", GUICtrlRead($Ta3))
    IniWrite("Srxl", "1", "Pa3", GUICtrlRead($Pa3))
    IniWrite("Srxl", "1", "Ta4", GUICtrlRead($Ta4))
    IniWrite("Srxl", "1", "Pa4", GUICtrlRead($Pa4))
    IniWrite("Srxl", "1", "Ta5", GUICtrlRead($Ta5))
    IniWrite("Srxl", "1", "Pa5", GUICtrlRead($Pa5))
    EndFunc ;==>SpeichernClick

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

    Func StartClick()
    GUICtrlSetState($Speichern, $GUI_DISABLE)
    GUICtrlSetState($Start, $GUI_DISABLE)
    GUICtrlSetState($Stopp, $GUI_ENABLE)
    While $go ;was er wiederholen soll, wenn man auf Start klickt
    If _Warten(10) = 0 then ExitLoop
    MouseMove(122, 900)
    If _Warten(20000) = 0 then ExitLoop
    MouseClick("left", 1200, 300)
    If _Warten(100) = 0 then ExitLoop
    Send("{enter}")
    If _Warten(5000) = 0 then ExitLoop
    WEnd
    EndFunc ;==>StartClick

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

    Func _Warten($ms)
    $timer = TimerInit()
    Do
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $Stopp
    GUICtrlSetState($Speichern, $GUI_ENABLE)
    GUICtrlSetState($Start, $GUI_ENABLE)
    GUICtrlSetState($Stopp, $GUI_DISABLE)
    $go = False
    $ms = TimerDiff($timer)
    Return 0
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    Sleep(10)
    Until TimerDiff($timer) > $ms
    Return 1
    EndFunc

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

    Func StoppClick() ;bei Stopp soll er eine Pause machen, also schlafen
    While 1
    Sleep(200)
    WEnd
    EndFunc ;==>StoppClick

    [/autoit]

    PS: auf erweiterten GUIGetMsg Mode hab ich diesmal verzichtet.
    PPS: GuiGetMsg ist für dein Vorhaben eh nicht wirklich geeignet! Ich empfehle OnEvent Modus.

  • Okay danke funktioniert jetzt :)

    Ich schau mir nacher mal genau an was du da gemacht hast, für weitere Projekte.

    Wo soll ich den bitte ein Bot schreiben?! Zocke keine Onlinegames mehr..

  • Dann stellt sich die Frage.
    Was soll das denn bringen, wenn du immer auf bestimmte Stellen klicken lässt? ^^
    Einen Sinn hat das nicht :D