Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 13:53

  • Please register to post and access all features, it's quick, easy and FREE!

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.

Reply
 
Old   #1
 
DraaaKe's Avatar
 
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
DraaaKe is offline  
Old 07/14/2010, 18:19   #2
 
PenGuin :O's Avatar
 
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
PenGuin :O is offline  
Old 07/14/2010, 18:19   #3
 
bladerofdarknes's Avatar
 
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
bladerofdarknes is offline  
Old 07/14/2010, 18:59   #4
 
PenGuin :O's Avatar
 
elite*gold: 2
Join Date: Mar 2008
Posts: 1,778
Received Thanks: 1,222
Quote:
Originally Posted by bladerofdarknes View Post
pinguin war ein paar sekunden schneller
Normal
PenGuin :O is offline  
Old 07/14/2010, 22:06   #5
 
DraaaKe's Avatar
 
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^^
DraaaKe is offline  
Old 07/15/2010, 00:23   #6
 
PenGuin :O's Avatar
 
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 -.-
PenGuin :O is offline  
Old 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.
.nAno is offline  
Thanks
1 User
Old 07/15/2010, 09:50   #8
 
DraaaKe's Avatar
 
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
DraaaKe is offline  
Old 07/15/2010, 11:24   #9
 
bladerofdarknes's Avatar
 
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).
bladerofdarknes is offline  
Old 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?
.nAno is offline  
Old 07/15/2010, 18:06   #11
 
PenGuin :O's Avatar
 
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
PenGuin :O is offline  
Old 07/15/2010, 20:45   #12
 
DraaaKe's Avatar
 
elite*gold: 99
Join Date: May 2009
Posts: 1,020
Received Thanks: 400
Quote:
Originally Posted by .nAno View Post
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
DraaaKe is offline  
Old 07/15/2010, 22:44   #13
 
PenGuin :O's Avatar
 
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)
PenGuin :O is offline  
Old 07/16/2010, 11:54   #14
 
DraaaKe's Avatar
 
elite*gold: 99
Join Date: May 2009
Posts: 1,020
Received Thanks: 400
Quote:
Originally Posted by pinguin94 View Post
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
DraaaKe is offline  
Old 07/16/2010, 11:59   #15
 
PenGuin :O's Avatar
 
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?
PenGuin :O is offline  
Reply


Similar Threads 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.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.