Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 06:05

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

Advertisement



Autoit Schleife beenden

Discussion on Autoit Schleife beenden within the AutoIt forum part of the Coders Den category.

Reply
 
Old   #1


 
AndyDe's Avatar
 
elite*gold: 18
Join Date: Jul 2013
Posts: 1,299
Received Thanks: 96
Autoit Schleife beenden

Ich habe folgendes Problem ich habe eine Func und die wird immer wiederholt nun möchte ich, das ich die mit meinen Stop Button unterbrechen kann.


Code:
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case -3
			Exit
		Case $start
				For $iL = 1 To GUICtrlRead($hinputanzahl) Step +1
				GUICtrlSetData($hEdit, "Runde: " & $iL & " von " &GUICtrlRead($hinputanzahl))
				ELBot()
				Next
		Case $Stop

	EndSwitch

WEnd
AndyDe is offline  
Old 07/24/2015, 22:06   #2

 
BladeTiger12's Avatar
 
elite*gold: 64
Join Date: May 2011
Posts: 1,228
Received Thanks: 847
Benutze AdlibRegister. Damit kann man das ganz einfach lösen mein Lieber Andy
Habs dir ja auch schon in Skype gesagt, aber anscheinend möchtest du das nicht nutzen .
BladeTiger12 is offline  
Old 07/25/2015, 02:57   #3


 
Moneypulation's Avatar
 
elite*gold: 138
Join Date: Apr 2012
Posts: 3,495
Received Thanks: 1,769
Falls du die ELBot() Funktion meinst, kannst du zum einen dein Script pausieren und die Funktion so unterbrechen, oder du lässt die Funktion durchlaufen, ohne dass sie etwas macht.

1.

HotKeySet("1","pausieren")

Global $Paused = False

Func pausieren()
$Paused = Not $Paused
While $Paused
Sleep(500)
WEnd
EndFunc

2.

HotKeySet("1","changeValue")

Global $Value = True

Func ELBot()
If $Value Then
...
...
...
EndIf
EndFunc

Func changeValue()
$Value = Not $Value
EndFunc

Das wären meine beiden Vorschläge
Moneypulation is offline  
Old 07/25/2015, 18:20   #4
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
Quote:
Originally Posted by AndyDe View Post
Ich habe folgendes Problem ich habe eine Func und die wird immer wiederholt nun möchte ich, das ich die mit meinen Stop Button unterbrechen kann.
Du kannst dir einfach einen Zustand definieren, welchen du über Buttons ändern kannst:
Code:
Dim $run
While True
   Switch GUIGetMsg()
	  Case -3
		 Exit
	  Case $start, $stop
		 $run = Not $run
   EndSwitch
   If $run Then
	  For $iL = 1 To GUICtrlRead($hinputanzahl) Step +1
		 GUICtrlSetData($hEdit, "Runde: " & $iL & " von " &GUICtrlRead($hinputanzahl))
		 ELBot()
	  Next
   EndIf
WEnd
Je nachdem, welchen Zustand deine Variable dann hat, werden Aktionen ausgeführt oder auch nicht.

Natürlich bräuchtest du so auch nur einen Button.
lolkop is offline  
Old 07/25/2015, 20:14   #5
 
elite*gold: 0
Join Date: Feb 2009
Posts: 1,137
Received Thanks: 572
Also ich habe mit Autoit nicht sehr viel am hut würde es aber prinzipiell so machen dass die Schleife Ausgeführt wird während die form Idled, also den Loop in den Messageloop integrieren:
Code:
 $iL = -1
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case -3
			Exit
		Case $start
                  $iL = 1
		Case $Stop
                  $iL = -1

	EndSwitch
        if $iL > 0 and $iL < GUICtrlRead($hinputanzahl) then
          //Do Your **** here
          $iL = $iL + 1
        endif

WEnd
warfley is offline  
Thanks
1 User
Old 07/25/2015, 20:24   #6
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
Quote:
Originally Posted by warfley View Post
Also ich habe mit Autoit nicht sehr viel am hut würde es aber prinzipiell so machen dass die Schleife Ausgeführt wird während die form Idled, also den Loop in den Messageloop integrieren
Das ist natürlich die sauberere Lösung =)
Hatte mir das was da im Hintergrund passieren soll, garnicht näher angeschaut =P
lolkop is offline  
Old 07/25/2015, 20:25   #7
 
alpines's Avatar
 
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
Quote:
Originally Posted by warfley View Post
Also ich habe mit Autoit nicht sehr viel am hut würde es aber prinzipiell so machen dass die Schleife Ausgeführt wird während die form Idled, also den Loop in den Messageloop integrieren:
Das Problem hier ist aber wenn da zeitintensive Aufgaben drinne erledigt werden. Wenn es einfache GUICtrlSetDatas oder ähliche Sachen sind ist das ja kein Problem aber wenn es WebRequests sind und die mal einen TimeOut kriegen, dann hängt die ganze Form.

Da würde ich doch lieber auf OnEventMode setzen und wenigstens den GUIThread separat laufen lassen.
alpines is offline  
Old 07/25/2015, 21:38   #8
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
Quote:
Originally Posted by alpines View Post
Das Problem hier ist aber wenn da zeitintensive Aufgaben drinne erledigt werden. Wenn es einfache GUICtrlSetDatas oder ähliche Sachen sind ist das ja kein Problem aber wenn es WebRequests sind und die mal einen TimeOut kriegen, dann hängt die ganze Form.

Da würde ich doch lieber auf OnEventMode setzen und wenigstens den GUIThread separat laufen lassen.
Auch TCP bzw. UDP sollte kein Porblem darstellen. Request senden und in der Main-Loop auf vollständige Antwort warten =)

Die GUI kann nebnbei problemlos, fleißig weiter mit abgefragt werden.

Edit:
Hier ist ein Video zu einem Bot für ein flashbasiertes Onlinespiel, welchen ich vor geraumer Zeit mal geschrieben habe:

Im GUI wurden pro Sekunde über 300 Einträge aktualisiert und die Pakete flossen ganz normal im Hintergrund. Für derartige Aufgaben ist weder Multithreading, noch ein Eventbasiertes GUI notwendig =)
lolkop is offline  
Reply


Similar Threads Similar Threads
[Java] Schleife mit Tastendruck beenden
03/23/2013 - General Coding - 7 Replies
Also, da ich keine Lust habe meine Programme mit Buttons zu steuern, habe ich mich dazu entschlossen es mit Tasten zu versuchen, nur leider funktioniert das garnicht bei mir. Ich habe es schon länger gegoogelt und irgendwie sollte es mit if (e.getKeyCode() == KeyEvent.VK_LEFT) funktionieren, aber leider tut es das nicht. Kann mir bitte jemand sagen was ich falsch mache?
[Brauche Hilfe] While schleife beenden.
09/16/2012 - AutoIt - 5 Replies
Hey Leute, ich hab ein kleines Problem, und zwar lässt sich die While schleife die ich mit dem Start button starte nicht beenden, ich habe bereits gelesen das die Schleife die Gui blockiert allerdings bin ich noch sehr neu und weiß nicht wie ich das beheben soll, wär nett wenn mal einer eine gänginge Methode postet/erklärt. Grüße Quellcode:pimp: #include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3>
While schleife beenden mit Button
02/14/2012 - AutoIt - 5 Replies
Erst mal Abend leute:) Und hier schon mein Problem: Ich weiß wie man eine While schleife beenden mit ExitLoop. Aber wie beende ich es mit einem anderen button?
[VB 2008] ( If Schleife/ Sub ) Beenden
10/05/2011 - .NET Languages - 3 Replies
Private Sub ButtonClick() If Button1.Enabled = True Then Button1.PerformClick() Exit Sub ElseIf Button2.Enabled = True Then Button2.PerformClick() Exit Sub ElseIf Button3.Enabled = True Then Button3.PerformClick() Exit Sub



All times are GMT +1. The time now is 06:05.


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.