Skripte selektiv beenden

  • Hallo mittlerweile habe ich mir jede Menge Skriptteile aus dem Forum
    zusammen geklaut und was brauchbares daraus gemacht :D
    Ich habe eine Oberfläche erstellt mit der man Skripte auswählen
    kann, nur leider schaffe ich es nicht wenn ich einen weiteren
    Button drücke das das entsprechend vorher gelaufende Skript
    mit seinen Hotkeys etc. beendet wird, ohne das ich die Oberfläche
    komplett beende :(
    Vielleicht kann mir ja mal wieder einer helfen, das wäre nett.

    Hier das Skript:


    [autoit]



    #include <GUIConstants.au3>
    #include <misc.au3>
    #include <Constants.au3>
    #Include <GuiList.au3>



    GUICreate(" Supertoo",600,450)
    GUISetState(@sw_show)
    Opt("TrayIconHide", 1)
    ProcessSetPriority ("supertool.exe", 4)

    $button1=GUICtrlCreateButton("Autologin",10,10,100,35)
    $button2=GUICtrlCreateButton("Waffen I",10,60,100,35)
    $button3=GUICtrlCreateButton("Waffen II",10,110,100,35)
    $button4=GUICtrlCreateButton("Waffen III",10,160,100,35)
    $button5=GUICtrlCreateButton("Waffen IV",10,210,100,35)

    GUICtrlcreatelabel("Autologin: Server auswählen, Mauszeiger auf Verbinden parken",120,10)
    GUICtrlcreatelabel("dann F1 drücken, nach erfolgreichen Login F2 zum Beenden drücken.",120,30)
    GUICtrlcreatelabel("Versetzt-Feuern mit 2 Tizonas und 4 Blastern",120,60)
    GUICtrlcreatelabel("Versetzt Feuern mit 2 Tizonas,2 Blastern 2 Kanons",120,110)
    GUICtrlcreatelabel("Versetzt Feuern mit 2 Tizonas und 4 Kanons",120,160)
    GUICtrlcreatelabel("Versetzt Feuern mit 2 Tizonas, Lancer(auf Slot 3) und 3 Blastern",120,210)

    GUICtrlcreatelabel("Erstellt von L]",10,400 );den Link möchte ich gerne so haben, das er angeklickt werden kann, aber nur den LINK

    GUICtrlCreateEdit("" ,10,300,25,20,0)


    $Skript=GUICtrlCreateLabel("",10,420,211,15)
    $CLOSE=GUICtrlCreateButton("EXIT",510,400,68,23)
    $reg=GUICtrlCreateButton("",1,645,10,10,)

    While 1
    $msg=GUIGetMsg()

    Select


    Case $msg = $button1
    $text = ""
    GUICtrlSetData($Skript, $text & "Starte das Skript")
    Sleep(1000)
    GUICtrlSetData($Skript, "")

    HotKeySet ( "{F1}","Start")
    HotKeySet ( "{F2}","Ausgang")


    While 1
    Sleep(100)
    WEnd


    func Start()
    while 1
    mouseClick( "left" )
    Sleep("300")
    Send("{Enter}")
    Wend
    EndFunc

    Func Ausgang()
    Exitloop
    EndFunc




    Case $msg = $button2
    $text = ""
    GUICtrlSetData($Skript, $text & "Starte das Skript")
    Sleep(1000)
    GUICtrlSetData($Skript, "")

    HotKeySet ( "<" , "druck2")
    HotKeySet ( "4" , "druck2")

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

    While 1
    Sleep(100)
    WEnd
    Func druck2()
    Send("1")
    Sleep("30")
    Send("5")
    Sleep("20")
    Send("2")
    Sleep("50")
    Send("3")
    Sleep("50")
    Send("9")
    Sleep("20")
    Send("6")
    Sleep("30")
    Send("1")
    Sleep("30")
    Send("5")
    Sleep("20")
    Send("2")
    Sleep("50")
    Send("3")
    Sleep("50")
    Send("9")
    Sleep("20")
    Send("6")
    Sleep("30")
    EndFunc

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

    Case $msg = $button3
    $text = ""
    GUICtrlSetData($Skript, $text & "Starte das Skript")
    Sleep(1000)
    GUICtrlSetData($Skript, "")

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

    HotKeySet ( "<" , "druck3")
    HotKeySet ( "4" , "druck3")

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

    While 1
    Sleep(100)
    WEnd
    Func druck3()
    Send("1")
    Sleep("30")
    Send("5")
    Sleep("20")
    Send("2")
    Sleep("50")
    Send("3")
    Sleep("50")
    Send("9")
    Sleep("20")
    Send("6")
    Sleep("30")
    Send("1")
    Sleep("30")
    Send("5")
    Sleep("20")
    Send("2")
    Sleep("50")
    Send("3")
    Sleep("50")
    Send("9")
    Sleep("20")
    Send("6")
    Sleep("30")
    EndFunc

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

    Case $msg = $button4
    $text = ""
    GUICtrlSetData($Skript, $text & "Starte das Skript")
    Sleep(1000)
    GUICtrlSetData($Skript, "")

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

    HotKeySet ( "<" , "druck4")
    HotKeySet ( "4" , "druck4")

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

    While 1
    Sleep(100)
    WEnd
    Func druck4()
    Send("1")
    Sleep("30")
    Send("5")
    EndFunc

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

    Case $msg = $button5
    $text = ""
    GUICtrlSetData($Skript, $text & "Starte das Skript")
    Sleep(1000)
    GUICtrlSetData($Skript, "")

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

    HotKeySet ( "ö" , "druck5")
    While 1
    Sleep(100)
    WEnd
    Func druck5()
    Send("{ENTER}")
    Send("XXXXXXXXXXXXXXXXXXXXXX")
    Sleep("5")
    Send("{ENTER}")
    Send("{ENTER}")
    Send("XXXXXXXXXXXXXXXXXXXXXX")
    Sleep("5")
    Send("{ENTER}")
    EndFunc

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



    Case $msg = $CLOSE
    Exit

    EndSelect


    If $msg=$GUI_EVENT_CLOSE Then ExitLoop
    WEnd

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

    6 Mal editiert, zuletzt von Snatch (11. März 2007 um 15:17)

  • Zitat

    Original von Snatch
    mittlerweile habe ich mir jede Menge Skriptteile aus dem Forum zusammen geklaut und was brauchbares daraus gemacht :D


    Meinste? ;)

    Ich möchte zunächst mal meckern... ;)

    • Ein einfaches Copy & Paste in mein SciTE hat mir zur Laufzeit Errors um die Ohren gehauen. Ein Befragen von Tidy war auch negativ. Du hast Select Case-Konstrukte nicht ordnungsgemäß beendet. Ich habe nicht näher recherchiert. Vielleicht kannste Dein Script nochmal korrekt hier reinkopieren. Wäre auch super, wenn Du dafür den "Spoiler"-Tag verwenden würdest.
    • Du baust sowas ein wie:

      Code
      while 1
         DoSomething()
      wend

      Hier wird die Schleife IMMER betreten, weil die Anfangsbedingung WAHR ist. Die Schleife wird NIE verlassen, weil es keine Abbruchbedingung gibt. Du bastelst mit sowas also Endlosschleifen. Wenn Du schon "while 1" verwendest (Eintritt in die Schleife ohne jede Bedingung), dann musst Du innerhalb der Schleife dafür sorgen, dass Du sie verlassen kannst, sonst hilft nur noch Script abschießen. ;)


    Könnteste das erstmal beheben? Dann sieht man mal weiter. ;)

    Ich habe aber schon das Gefühl, dass der bedingte Schleifenaustritt Dein Problem ist. ;)

  • -.-

    Kein Plan warum da so ein Müll drin Stand.
    Hatte es getestet, hab wohl die falsche Version kopiert.

    Naja ich habe das Skript oben geupdatet, jetzt läuft es!

  • Tach auch!

    also wenn das mit hotkeyset beenden willst einfach den befehl hotkeyset("{F1}","")
    und für f2 halt mit f2 sollt eig kein problem sein

    PS: ich will ja nichts sagen, aber dein script ist ein bisschen unübersichtlich du solltest mache zeilen einach mal einschieben dann erkennt man den zusammenhang ein wenig besser! kannst dir sowas ja ma l in der autoithilfe angucken unter while..wend oder select switch auf jeden fall gibts genug beispile naja viel spass beim tüfttteln

    mfg DjBasslord

  • Ich möchte aber nur das Skript beenden das ich vorher ausgewählt
    habe und nicht das ganze Programm, was durch F2 passieren
    würde.
    Ausserdem brauche ich Hilfe oder Tips damit ich durch drücken
    eines Buttons das vorher gelaufene Skript beendet wird.
    Weiß jemand wie ich das realisieren kann?

  • Also: bitte poste mal dein aktuelles script und fallls die andern mit autoit geschriebn wurden die auch bitte das würde die arbeit um einiges erleichtern! und wenns möglich ist mit

    Spoiler anzeigen


    und jetzt bitte noch genaue beschreibung was genau du machen willst!
    man kann, wenn die andern scripte mit autoit geschrieben wurden die in das neue miteinbauen!

    mfg DjBasslord

    Einmal editiert, zuletzt von DjBasslord (11. März 2007 um 09:38)

  • Ich habe den Code oben aktualisiert, jetzt läuft er definitiv.
    Ich möchte gerne das, wenn ich den Button >Autologin< betätige das das Loginskript(steht unter Case $msg = $button1)
    ausgewählt wird.
    Das funktioniert auch soweit, das ich das Skript mit F1 starten kann
    und mit F2 beenden, nur bleiben die Hotkeys weiterhin
    "scharf", so das das Skript sobald man wieder F1 drückt startet :(.

    Bei den Button 2-5 möchte ich gerne das wenn ich einen
    von den Buttons drücke ein beliebiges Skript abläuft,
    das sich beendet wenn man einen anderen Button drückt.

    Beispiel:

    Druck auf Button 2 ->Start Skript 2
    Druck auf Button 3 ->beenden Skript 2 und start Skript 3
    Druck auf Button 4 ->beenden Skript 3 und start Skript 4
    etc....


    Danke für Deine Geduld, ich hoffe jetzt ist es verständlicher

  • hi also:

    ich würde es mit den hotkey so machen:

    [autoit]

    func Start()
    hotkeyset("{F1}","")
    while 1
    mouseClick( "left" )
    Sleep("300")
    Send("{Enter}")
    Wend
    EndFunc

    [/autoit]


    dann ist der hotkey wenn man denn 1mal drückt aus!

    und was heißt beenden? ist da eine schleife drin? haben die sripts ein fenster oder oder irgendwas wo man die ausschaltenkann?
    ansonsten beleibt dann nur procesclose

    und ich habe da immer noch ne frage die du mir leider nihct beantwortet hast: sind die anderen scripts auch mit autoit erstellt worden? denn dann wäre es nämlich ein wenig einfacher dann könnte man die nämlich einfach oben einbauen und hat keine probleme mehr das zubeenden!


    mfg DjBasslord

    Einmal editiert, zuletzt von DjBasslord (11. März 2007 um 10:11)

  • Ja alles Skripte sind mit Autoit erstellt worden.
    Beenden heißt das Skript das man vorher über einen
    Button gestartet hat soll beendet werden, d.h.
    die Hotkeys die im Skript vorgekommen sind, dürfen keine
    Aktion mehr ausführen, d.h.

    Ich drücke Button1 (Autologin)

    Starte Skript mit F1
    Die Schleife läuft solange bis man F2 drückt, dann soll
    die Schleife beendet werden.

    Jetzt dürfen F1 und F2 keine Funktionen mehr ausführen. und
    trotzdem möchte ich die Möglichkeit haben über die anderen
    Buttons Skripte zu starten, also das Auswahlmenue soll
    weiterhin geöffnet bleiben.

  • OK!

    dann poste die bitte auch mal! dann baue ich die mal in das script oben eind as wäre nämlich einfachen!

    mfg DjBasslord

  • Zitat

    Original von DjBasslord
    OK!

    dann poste die bitte auch mal! dann baue ich die mal in das script oben eind as wäre nämlich einfachen!

    mfg DjBasslord

    Ich habe oben das Skript gändert, da bei mir der Spoilerbutton
    nicht funktioniert.
    Die Skripte die bei 2-4 reinkommen benutzen alle die gleichen
    Hotkey, haben jedoch eine andere Funktion.
    Skript 5 hat einen anderen Hotkey und auch eine andere Funktion

  • Bei Skript 1 die Funktion über F2 beenden,
    die GUI-Oberfläche soll aber erhalten bleiben.

    Bei 2-4

    Beispiel:

    Druck auf Button 2 ->Start Skript 2
    Druck auf Button 3 ->beenden Skript 2 und start Skript 3
    Druck auf Button 4 ->beenden Skript 3 und start Skript 4
    Druck auf Button 2 ->beendet Skript 4 startet Skript 2

    etc....

    Um alles zu beenden ist der Exit Button, der imho auch funktioniert

  • :weinen: puh! habs ma einwenig übersichtlicher gemacht!

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <misc.au3>
    #include <Constants.au3>
    #Include <GuiList.au3>
    #include <GUIConstants.au3>
    #include <misc.au3>
    #include <Constants.au3>
    #Include <GuiList.au3>
    #include <IE.au3>
    ;~ #NoTrayIcon
    Opt("TrayIconDebug",1)

    GUICreate("Freelancer Supertool by Coxsta",600,450)
    GUISetState()
    ProcessSetPriority ("supertool.exe", 4)

    $button1=GUICtrlCreateButton("Autologin",10,10,100,35)
    $button2=GUICtrlCreateButton("Waffen I",10,60,100,35)
    $button3=GUICtrlCreateButton("Waffen II",10,110,100,35)
    $button4=GUICtrlCreateButton("Waffen III",10,160,100,35)
    $button5=GUICtrlCreateButton("Waffen IV",10,210,100,35)
    $stop =GUICtrlCreateButton("Stop",10,260,100,35)
    $dll = DllOpen("user32.dll")
    GUICtrlcreatelabel("Autologin: Server auswählen, Mauszeiger auf Verbinden parken",120,10)
    GUICtrlcreatelabel("dann F1 drücken, nach erfolgreichen Login F2 zum Beenden drücken.",120,30)
    GUICtrlcreatelabel("Versetzt-Feuern mit 2 Tizonas und 4 Blastern",120,60)
    GUICtrlcreatelabel("Versetzt Feuern mit 2 Tizonas,2 Blastern 2 Kanons",120,110)
    GUICtrlcreatelabel("Versetzt Feuern mit 2 Tizonas und 4 Kanons",120,160)
    GUICtrlcreatelabel("Versetzt Feuern mit 2 Tizonas, Lancer(auf Slot 3) und 3 Blastern",120,210)

    $label = GUICtrlcreatelabel("Erstellt von -]uSF[-Coxsta. Goto: https://autoit.de/www.uSF.de.vu",10,400 );den Link möchte ich gerne so haben, das er angeklickt werden kann, aber nur den LINK

    GUICtrlCreateEdit("" ,10,300,25,20,0)


    $Skript=GUICtrlCreateLabel("",10,420,211,15)
    $CLOSE=GUICtrlCreateButton("EXIT",510,400,68,23)
    $reg=GUICtrlCreateButton("",1,645,10,10,)

    While 1
    $msg=GUIGetMsg()
    Switch $msg
    Case $label
    _IECreate("www.uSF.de.vu")
    Case $button1
    $text = ""
    GUICtrlSetData($Skript, $text & "Starte das Skript")
    Sleep(1000)
    GUICtrlSetData($Skript, "")
    HotKeySet ( "{F1}","Start")
    Do
    $msg = GUIGetMsg()
    Sleep(100)
    Until $msg = $stop or _IsPressed("71",$dll)
    Case $button2
    $text = ""
    GUICtrlSetData($Skript, $text & "Starte das Skript")
    Sleep(1000)
    GUICtrlSetData($Skript, "")
    HotKeySet ( "<" , "druck0")
    HotKeySet ( "4" , "druck0")
    Do
    $msg = GUIGetMsg()
    Sleep(100)
    Until $msg = $stop or _IsPressed("71",$dll) Or $msg = $button2 Or $msg = $button3 or $msg = $button4 Or $msg = $button5
    HotKeySet ( "<" , "donothing")
    HotKeySet ( "4" , "donothing")
    Case $button3
    $text = ""
    GUICtrlSetData($Skript, $text & "Starte das Skript")
    Sleep(1000)
    GUICtrlSetData($Skript, "")
    HotKeySet ( "<" , "druck1")
    HotKeySet ( "4" , "druck1")
    Do
    $msg = GUIGetMsg()
    Sleep(100)
    Until $msg = $stop or _IsPressed("71",$dll) Or $msg = $button2 Or $msg = $button3 or $msg = $button4 Or $msg = $button5
    HotKeySet ( "<" , "donothing")
    HotKeySet ( "4" , "donothing")
    Case $button4
    $text = ""
    GUICtrlSetData($Skript, $text & "Starte das Skript")
    Sleep(1000)
    GUICtrlSetData($Skript, "")
    HotKeySet ( "<" , "druck2")
    HotKeySet ( "4" , "druck2")
    Do
    $msg = GUIGetMsg()
    Sleep(100)
    Until $msg = $stop or _IsPressed("71",$dll) Or $msg = $button2 Or $msg = $button3 or $msg = $button4 Or $msg = $button5
    HotKeySet ( "<" , "donothing")
    HotKeySet ( "4" , "donothing")
    Case $button5
    $text = ""
    GUICtrlSetData($Skript, $text & "Starte das Skript")
    Sleep(1000)
    GUICtrlSetData($Skript, "")
    HotKeySet ( "<" , "druck3")
    HotKeySet ( "4" , "druck3")
    Do
    $msg = GUIGetMsg()
    Sleep(100)
    Until $msg = $stop or _IsPressed("71",$dll) Or $msg = $button2 Or $msg = $button3 or $msg = $button4 Or $msg = $button5
    HotKeySet ( "<" , "donothing")
    HotKeySet ( "4" , "donothing")
    Case $CLOSE
    Exit
    Case -3
    Exit
    EndSwitch
    WEnd

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

    ;functions
    Func druck0()
    Send("1")
    Sleep("30")
    Send("5")
    Sleep("20")
    Send("2")
    Sleep("50")
    Send("3")
    Sleep("50")
    Send("9")
    Sleep("20")
    Send("6")
    Sleep("30")
    Send("1")
    Sleep("30")
    Send("5")
    Sleep("20")
    Send("2")
    Sleep("50")
    Send("3")
    Sleep("50")
    Send("9")
    Sleep("20")
    Send("6")
    Sleep("30")
    EndFunc
    Func druck1()
    Send("1")
    Sleep("30")
    Send("5")
    Sleep("20")
    Send("2")
    Sleep("50")
    Send("3")
    Sleep("50")
    Send("9")
    Sleep("20")
    Send("6")
    Sleep("30")
    Send("1")
    Sleep("30")
    Send("5")
    Sleep("20")
    Send("2")
    Sleep("50")
    Send("3")
    Sleep("50")
    Send("9")
    Sleep("20")
    Send("6")
    Sleep("30")
    EndFunc
    Func druck2()
    Send("1")
    Sleep("30")
    Send("5")
    EndFunc
    Func druck3()
    Send("1")
    Sleep("30")
    Send("5")
    Sleep("20")
    Send("2")
    Sleep("50")
    Send("3")
    Sleep("50")
    Send("9")
    EndFunc
    Func Start()
    HotKeySet("{F1}","donothing") ;==> verhindert das das script noch ma läuft
    while 1
    mouseClick( "left" )
    Sleep("300")
    Send("{Enter}")
    Wend
    EndFunc

    Func donothing()
    Sleep(1)
    EndFunc

    [/autoit]


    also du kannst die funktion alle über F2 oder über Stop oder über button2 -button5 beenden aber damit das neu startet muss man leider 2mal klicken!

    ps: mit dem link muss du einfach aufs label klicken aber ich denke da gibt es noch ne bessere lösung!

    mfg DJBasslord

    Einmal editiert, zuletzt von DjBasslord (11. März 2007 um 11:57)

  • HI mega!

    warum den einfach wenns auch kopliziert geht?
    er wollte am anfang sogar noch scripte aufrufen und sie dann wieder schließen ich konnte ihn aber dazu bringen die scripte in das aktuele einzubauen!

    mfg DjBasslord

    Einmal editiert, zuletzt von DjBasslord (11. März 2007 um 12:36)

  • ja bitte!

    haste denn wenigsten jetzt dein ziel erriecht? bzw, biste fertig?
    haste meins ma ausprobiert?
    welches haste denn jetzt genommen?
    mfg DJBasslord

    Einmal editiert, zuletzt von DjBasslord (11. März 2007 um 15:19)