|
You last visited: Today at 06:05
Advertisement
Autoit Schleife beenden
Discussion on Autoit Schleife beenden within the AutoIt forum part of the Coders Den category.
07/24/2015, 21:39
|
#1
|
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
|
|
|
07/24/2015, 22:06
|
#2
|
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 .
|
|
|
07/25/2015, 02:57
|
#3
|
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
|
|
|
07/25/2015, 18:20
|
#4
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
Quote:
Originally Posted by AndyDe
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.
|
|
|
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
|
|
|
07/25/2015, 20:24
|
#6
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
Quote:
Originally Posted by warfley
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
|
|
|
07/25/2015, 20:25
|
#7
|
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
|
Quote:
Originally Posted by warfley
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.
|
|
|
07/25/2015, 21:38
|
#8
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
Quote:
Originally Posted by alpines
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 =)
|
|
|
|
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.
|
|