|
You last visited: Today at 13:53
Advertisement
Wie kommt man aus Case raus, ohne Exit?
Discussion on Wie kommt man aus Case raus, ohne Exit? within the AutoIt forum part of the Coders Den category.
07/14/2010, 17:30
|
#1
|
elite*gold: 99
Join Date: May 2009
Posts: 1,020
Received Thanks: 400
|
Wie kommt man aus Case raus, ohne Exit?
Leute ich hab ein Problem, und zwar:
Es geht um ein riesen Programm mit sehr vielen Sachen, den Code kann ich nicht posten aus 2 Gründen:
.) Zu lang
.) Code sollte Non - Pub bleiben
Zum Problem:
Also, es gibt ein Hauptfenster wo jetzt zB ein KlickBot ist, diesen startet man per Start Button, dann soll er mit dem HotKey, den man vorher einstellen kann, beendet werden, und man soll ihn NOCHMAL oder ein anderes Tool starten können! das GUI soll erhalten bleiben!
Ich habe nemlich, weil es so viele Tabs sind, alles unten in der Switch Schleife als Case eingebaut, wenn da jetzt (sehr sehr sehr vereinfacht^^) zum Beispiel so etwas steht:
Case $Start
$HotKeyAuslesen = guictrlread($HotkeyInput)
$SleepzeitAuslesen = guictrlread($Slider)
hotkeyset("{" & $HotKeyAuslesen & "}","stop") <-- Man kann bei mir nur Tasten mit F auswählen
while 1
mouseclick("left")
sleep($SleepzeitAuslesen)
wend
So, da stehen halt um die 200-300 Cases in der einen Switch. Es gibt halt dann noch mehrere Fenster wie EinstellungsFenster und Statistik Fenster, aber die sollen nach dem starten alle beendet werden.
Das ist ja mit GUIDelete($Zusatzfenster_oder_so) und ExitLoop ja nicht schwer. Aber ich hab KP wie ich mit der Funktion "stop" jetzt die case beenden kann und wieder eine neue auswählen kann..
Hoffe ihr versteht mein Problem^^ Falls nicht mach ich ne Beispiel au3 und lad sie hoch^^
EDIT: au3's kann man nicht hochladen, hier n Source vom Beispiel damit ihr wisst was ich meine:
Code:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$Form = GUICreate("KlickBot", 385, 113, 192, 124)
$Info = GUICtrlCreateLabel("Das hier ist ein KlickBot, Logisch oder?", 8, 8, 369, 21)
$Zeit = GUICtrlCreateInput("", 126, 48, 41, 21)
$HotKey = GUICtrlCreateInput("", 126, 80, 41, 21)
$Start = GUICtrlCreateButton("GO!!!!!", 182, 48, 225, 57, $WS_GROUP)
$ZeitInfo = GUICtrlCreateLabel("Klick-Geschwindigkeit:", 8, 50, 103, 21)
$HotKeyInfo = GUICtrlCreateLabel("Pausierungs HotKey:", 8, 82, 103, 21)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg ; Switch Schleife
Case $GUI_EVENT_CLOSE
Exit
Case $Start
$ZeitAuslesen = GUICtrlRead($Zeit) ;Zeit auslesen
$HotKeyAuslesen = GUICtrlRead($HotKey) ; HotKey auslesen
HotKeySet("{" & $HotKeyAuslesen & "}","Pause") ;HotKey zuweisen
While 1
MouseClick("left") ;oder halt Right mir egal^^
sleep($ZeitAuslesen*1000) ;Mal 1000 weil die User es in Sekunden eingeben
WEnd
EndSwitch
WEnd
Func Pause() ;Hier die Funktion die alles Beenden soll und mich zurück zum GUI liefern soll^^
;Was gehört
;hier den
;blos rein?
EndFunc
MfG DraaaKe
|
|
|
07/14/2010, 18:19
|
#2
|
elite*gold: 2
Join Date: Mar 2008
Posts: 1,778
Received Thanks: 1,222
|
Exitloop in der hilfe anschauen, mit besonderer Beachtung der Value die angegeben werden kann
|
|
|
07/14/2010, 18:19
|
#3
|
elite*gold: 0
Join Date: Mar 2008
Posts: 1,524
Received Thanks: 285
|
ExitLoop, so neben bei du brauchst nur das include:
Quote:
#include <GUIConstantsEx.au3>
|
der rest is unnötig
pinguin war ein paar sekunden schneller
|
|
|
07/14/2010, 18:59
|
#4
|
elite*gold: 2
Join Date: Mar 2008
Posts: 1,778
Received Thanks: 1,222
|
Quote:
Originally Posted by bladerofdarknes
pinguin war ein paar sekunden schneller
|
Normal
|
|
|
07/14/2010, 22:06
|
#5
|
elite*gold: 99
Join Date: May 2009
Posts: 1,020
Received Thanks: 400
|
ihr checkt es nicht oder? Ich sagte doch oben: Ich möchte die anderen Cases weiterhin nutzen!
Das heist Ich darf kein exitloop verwenden, weil es ja dann aus der schleife springt und nix mehr anklickbar ist...
Nächstes mal bitte ganz lesen^^
|
|
|
07/15/2010, 00:23
|
#6
|
elite*gold: 2
Join Date: Mar 2008
Posts: 1,778
Received Thanks: 1,222
|
Du checkst es nicht oder?
Solang das Switch in einer While Schleife ist, geht ExitLoop
Du springst aus dem Switch raus und durch die Schleife springt er wieder in das Switch rein -.-
|
|
|
07/15/2010, 02:04
|
#7
|
elite*gold: 1
Join Date: Oct 2008
Posts: 1,078
Received Thanks: 276
|
Wenn sich Leute bereit erklären dir zu helfen und die Antwort nicht deinem gewünschten Ergebniss entspricht solltest du wenigstens den Anstand besitzen freundlich zu bleiben...
Hier mal ein Lösungsvorschlag:
PHP Code:
... Switch $nMsg Case ... ... Case $start $running=True While $running ;tut dein Bot was immer er tun soll If GuiGetMsg() = $pause Then $running=False WEnd EndSwitch
So beendet er deinen Bot, nachdem er seine Aufgabe ausgeführt hat.
Für ein sofortiges Abbrechen wie bereits erwähnt ExitLoop oder eine weitere If-Anweisung für einen direkten Sprung zum gewünschten Fortsetzungspunkt.
Ich verstehe allerdings nicht, warum du einen KlickBot non-pub machst, jeder Vollidiot der bis 3 Zählen kann bekommt das selber hin.
|
|
|
07/15/2010, 09:50
|
#8
|
elite*gold: 99
Join Date: May 2009
Posts: 1,020
Received Thanks: 400
|
es ist ja nicht nur ein klickbot, wie ich oben geschrieben habe wäre alles zu lange(über 2000 zeilen) und darum hab ich ein beispiel geschrieben.
€dit: pinguin94, du checkst es immer noch nicht oder? xD LIES BITTE MEINEN THREAD, Er springt nicht wieder in die schleife....... das solltest du schon wissen. Ich erkläre es dir an einem Beispiel:
While 1
$nMsg = GUIGetMsg()
Switch $nMsg ; Switch Schleife startet
Case $Button1
Exitloop
EndSwitch
WEnd
HIER SPRINGT ER HER WO DAS SKRIPT ZU ENDE IST DU SCHLAU MEIER!!!
Was hätte den ExitLoop sonst für nen Sinn?? Bisschen logisch denken und du hättest mir schreibarbeit erspart
|
|
|
07/15/2010, 11:24
|
#9
|
elite*gold: 0
Join Date: Mar 2008
Posts: 1,524
Received Thanks: 285
|
ich muss sagen du redest in einem ton mit uns wo dir sicherlich kaum wer noch helfen will, außerdem sagte er schon schau dir die exitloop funktion in der helpfile an, wer nicht will der hat schon :-)
Quote:
level [optional] The number of loop levels to exit from. The default is 1 (meaning the current loop).
|
|
|
|
07/15/2010, 12:42
|
#10
|
elite*gold: 1
Join Date: Oct 2008
Posts: 1,078
Received Thanks: 276
|
Nur mal um klarzustellen ob wir hier nicht aneinader vorbeireden;
PHP Code:
While 1=1
$msg=GuiGetMsg()
Switch $msg Case $blupp MsgBox(0, "", "Blupp!")
;weitere Cases
Case $start MouseClick(...) MouseMove(...)
While 1 MouseClick(...) MouseMove(...) Send
WEnd
EndSwitch
WEnd
Soweit richtig?
Und du möchtest nun, dass die Schleife im Case von $start wieder beendet wird und er zu seinem Switch zurückkehrt?
|
|
|
07/15/2010, 18:06
|
#11
|
elite*gold: 2
Join Date: Mar 2008
Posts: 1,778
Received Thanks: 1,222
|
Wenn ja, dann ist doch an ExitLoop nichts falsch O_O
|
|
|
07/15/2010, 20:45
|
#12
|
elite*gold: 99
Join Date: May 2009
Posts: 1,020
Received Thanks: 400
|
Quote:
Originally Posted by .nAno
Nur mal um klarzustellen ob wir hier nicht aneinader vorbeireden;
PHP Code:
While 1=1 $msg=GuiGetMsg() Switch $msg Case $blupp MsgBox(0, "", "Blupp!") ;weitere Cases Case $start MouseClick(...) MouseMove(...) While 1 MouseClick(...) MouseMove(...) Send WEnd EndSwitch WEnd
Soweit richtig?
Und du möchtest nun, dass die Schleife im Case von $start wieder beendet wird und er zu seinem Switch zurückkehrt?
|
Ja, genau das wollte ich^^ Ich habs zwar jetz schon anders gelöst, einfach alles zu Funktionen umgeschrieben, hat zwar ewig gedauert aber jetz gehts wenigstens^^
Ich bemühe mich jetzt mal höflich zu sein:
@Pinguin94, Ich komme mit ExitLoop nicht weiter aus 2 Gründen.
Grund1: Das vorherige steht in einer WHILE, das heist, man kann solange keinen anderen button drücken, wenn dieser in einer case geschrieben ist, das geht nur mit funktionen.
Grund2: Mit ExitLoop springt er in die Switches der anderen Fenster darunter, diese sind zwar inzwischen auch alle durch Functionen ersetzt worden aber ich würde trotzdem gerne sehen wie man das mit Cases lösen kann^^
Also ich habe:
1 Skript, in dem 2 Cases vorkommen, die eine Case für den StartButton, die andere für den Pause Button. So, im StartButton läuft nun eine while --> daraus folgt, das button2 nun nichtmehr anklickbar ist, bis die while zu ende ist, da aber die while nie zu ende gehen wird da da nur While 1 steht, wird auch der Pause Button nie funktionieren.
Ich suche nun eine Lösung um das zu behebn!
Ich habe auch schon probiert es mit einer Variable zu lösen sprich so:
$Variable = "1"
Case $StartButton
While 1
mouseclick("left")
sleep(100)
If $Variable = "0" Then
ExitLoop
endif
wend
Case $PauseButton
$Variable = "0"
Mit dem Skript wollte ich erreichen das es zumindest mal aufhört, falls dies geklappt hätte, dann hätte ich in der If auf die hauptfunktion weitergeleitet.
Aber leider hat es nicht geklappt.
PS: Ich weis, ich bin nicht sehr höflich wenn falsche Antworten kommen^^ KA warum aber da raste ich einfach immer aus, wenn ich mir schon Mühe gebe das ganze Grob zu erklären^^ Ich hoffe ihr entschuldigt!
MfG DraaaKe
HIER 2 BEISPIEL SKRIPTS:
Skript Nummer1: Hier ist es so, wie es pinguin94 erklärt, einfach in Button1 ne while in button2 n exitloop
Code:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("", 155, 93, 192, 124)
$Button1 = GUICtrlCreateButton("Start", 8, 8, 137, 33, $WS_GROUP)
$Button2 = GUICtrlCreateButton("Stop", 8, 48, 137, 33, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
while 1
sleep(1000)
mouseclick("left")
WEnd
Case $Button2
ExitLoop
EndSwitch
WEnd
Folgende Fehler treten auf:
1.) Man kann Button2 wegen der While in Button1 nicht nutzen
2.) ExitLoop beendet die switch und macht darunter weiter, nicht darüber, darunter ist nichts --> Es beendet sich
Skript Nummer 2: Bin eben duch zufall drauf gekommen mit dem AdLib^^ Problem gelöst^^
Code:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("", 155, 93, 192, 124)
$Button1 = GUICtrlCreateButton("Start", 8, 8, 137, 33, $WS_GROUP)
$Button2 = GUICtrlCreateButton("Stop", 8, 48, 137, 33, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
AdlibRegister("_Button3",1000)
Case $Button2
AdlibUnRegister("_Button3")
EndSwitch
WEnd
Func _Button3()
mouseclick("left")
EndFunc
Fehler: Keine
So Thread ist nun gelöst^^ Trotzdem danke für eure Hilfe
|
|
|
07/15/2010, 22:44
|
#13
|
elite*gold: 2
Join Date: Mar 2008
Posts: 1,778
Received Thanks: 1,222
|
Code:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("", 155, 93, 192, 124)
$Button1 = GUICtrlCreateButton("Start", 8, 8, 137, 33, $WS_GROUP)
$Button2 = GUICtrlCreateButton("Stop", 8, 48, 137, 33, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
while 1
sleep(1000)
mouseclick("left")
If GUIGetMsg() = $Button2 Then ExitLoop
WEnd
EndSwitch
WEnd
8)
|
|
|
07/16/2010, 11:54
|
#14
|
elite*gold: 99
Join Date: May 2009
Posts: 1,020
Received Thanks: 400
|
Quote:
Originally Posted by pinguin94
Code:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("", 155, 93, 192, 124)
$Button1 = GUICtrlCreateButton("Start", 8, 8, 137, 33, $WS_GROUP)
$Button2 = GUICtrlCreateButton("Stop", 8, 48, 137, 33, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
while 1
sleep(1000)
mouseclick("left")
If GUIGetMsg() = $Button2 Then ExitLoop
WEnd
EndSwitch
WEnd
8)
|
GEHT NICHT^^ Wie oft den noch^^ In Cases kann man während einer While keinen Button anklicken
|
|
|
07/16/2010, 11:59
|
#15
|
elite*gold: 2
Join Date: Mar 2008
Posts: 1,778
Received Thanks: 1,222
|
Dann mach On Event?
Oder einfach eine AdlibRegister Funktion wodrin die GuiGetMsg ist?
|
|
|
Similar Threads
|
Wann kommt maxn.V17 raus
04/20/2010 - WarRock - 21 Replies
huhuh wan kommt den Public maxn.v17 oder v16,2 raus?
|
Neue Map wie kommt man raus?^^
11/13/2009 - Metin2 Private Server - 4 Replies
Hi,
also stecke in der neuen map fest wie kommt man da raus? Also glaube die heißt seelen grotte oder so
|
[Longjuyt2]Wie kommt man aus der seelengrotte raus
07/17/2009 - Metin2 Private Server - 5 Replies
HI leute ein freund steckt in der seelengrotte fest er hat es auch schon mit der china exe aus probiert aber es klappt nich
könnt ihr uns bitte weiter helfen
|
All times are GMT +2. The time now is 13:53.
|
|