Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 04:31

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

Advertisement



Hilfe bei einer Schleife (Pausierung)

Discussion on Hilfe bei einer Schleife (Pausierung) within the AutoIt forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Apr 2015
Posts: 8
Received Thanks: 0
Hilfe bei einer Schleife (Pausierung)

Hallo Leute,

ich bin ein ziemlicher Anfänger, - möchte aber direkt sagen, ich muss kein Profi werden. Ich habe mir für die Uni ein kleines "Lesetool" gebaut, doch leider hat es ein Problem :

Wenn ich das sleep länger als 3000 mache, kann ich das Program nicht mehr stoppen. Scheinbar hängt es dann im Sleepmodus fest. Mit sleep 100 kann ich es stoppen, aber das ist zu kurz zum lesen :-( (Später möchte ich mit iniread iniwrite noch den "sleep" über das Menü eingeben (je nach Textlänge - das ist aber dann die nächste Baustelle. Hilfe brauche ich bei dem Sleep eben...) Ich habe mal was mit einem Timer statt Sleep gelesen, doch nach 2-3 Stunden probieren, frage ich nun doch nach Hife.

Ich freue mich über eine Lösung. Hier der Code:


Code:
While 1

	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button1
			If $schleife = 0 Then
				AdlibRegister("schleife", 200)
				GUICtrlSetData($Button1, "Stop")
				$schleife = 1
			Else
				AdlibUnRegister()
				GUICtrlSetData($Button1, "Blättern")
				$schleife = 0
			EndIf
	EndSwitch

WEnd


Func schleife()

ControlClick($hwnd, "", "", "left",1, Random(10,25), Random(325,370)) ;Öffnechat
sleep(100)



ControlClick($hwnd, "", "", "left",1, Random(339,355), Random(325,370)) ;Öffnechat

EndFunc   ;==>schleife
Howa2000 is offline  
Old 04/30/2015, 00:52   #2

 
Moneypulation's Avatar
 
elite*gold: 138
Join Date: Apr 2012
Posts: 3,494
Received Thanks: 1,769
1. Ich kenne mich nicht besonders mit Adlib aus aber dein 200ms Timer könnte das Problem sein. Wenn du z.B. einen Sleep mit 500ms in der Funktion einbaust, wird ja schon bereits nach 200ms die Funktion wieder aufgerufen bevor die erste beendet wurde. In der wird ja auch in der Adlibfunktion geschrieben:
Quote:
;... die Ausführung darf nicht blockiert werden. Die Verwendung der ...Wait(), MsgBox(), InputBox() Funktionen ist daher zu vermeiden.
Ich könnte mich aber auch irren, kenne mich wie gesagt damit nicht besonders aus
2. Timer sind ganz einfach. Mit $Timer1 = TimerInit() initialisierst du einen Timer. Mit $ZeitVergangen = TimerDiff($Timer1) findest du heraus wie viele Millisekunden in der Zeit vom initialisieren vergangen sind. Beispiel:


$Timer1 = TimerInit()
Sleep(3000)
$ZeitVergangen = TimerDiff($Timer1)
Msgbox(0,"Zeit vergangen",$ZeitVergangen)

; Er wird dir ~3000 ausgeben

Mit $Timer1 = TimerInit() kannst du den Timer wieder auf Null setzen, sodass er wieder neu anfängt zu zählen. Mit Timern kann man so ein Zeitproblem gut und einfach lösen, nur verstehe ich nicht ganz was du mit deinem "Lesetool" meinst und was er genau macht. Hoffe ich hab dir etwas weitergeholfen
Moneypulation is offline  
Old 04/30/2015, 01:16   #3
 
elite*gold: 0
Join Date: Apr 2015
Posts: 8
Received Thanks: 0
Vielen Dank für deine Antwort. Leider blockiert er mit dem Timer auch den Abbruch via Buttom


Ich habe einen anderen Weg probiert, jedoch habe ich da keine Ahnung wie ich die Iniwrite einbinde :/ Jetzt geht das mit dem Timer bzw dem langen Sleep aber eben nicht der iniwrite.. grübel


Quote:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt('GUIOnEventMode', 1)
$hWnd = WinGetHandle("Windows Fotoanzeige")
Global $modus = False
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1_1_1 = GUICreate("Blatterer", 186, 107, 321, 314)
GUISetBkColor(0xABABAB)
$Start = GUICtrlCreateButton("Start", 11, 5, 81, 33)
$Stop = GUICtrlCreateButton("Stop", 92, 5, 81, 33)
$bis = GUICtrlCreateInput("3000", 53, 42, 37, 21)
$speichern = GUICtrlCreateButton("Übernehmen", 92, 40, 81, 25)
$von = GUICtrlCreateInput("2000", 12, 42, 37, 21)
$beschreibung = GUICtrlCreateButton("Beschreibung", 13, 72, 153, 25) ; Hier soll ein Popup aufgehen, wo ich eine kleine Erklärung mitteilen möchte. (Text)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###


#cs Ich Schaffe es nicht diese Funktion einzubringen bzw das Program scheint dann in dieser Funktion hängen zu bleiben

Dim $ini = @ScriptDir & "\Config.ini"
Dim $AngabeVON = IniRead ("Config.ini", "Benutzerdaten", "von", GUICtrlRead($von))
Dim $AngabeBIS = IniRead ("Config.ini", "Benutzerdaten", "bis", GUICtrlRead($bis))
$nMsg = GUIGetMsg()
Switch $nMsg

Case $speichern
IniWrite("Config.ini", "Benutzerdaten", "von", GUICtrlRead($von))
IniWrite("Config.ini", "Benutzerdaten", "bis", GUICtrlRead($bis))

Case $GUI_EVENT_CLOSE
Exit
EndSwitch
#ce


GUICtrlSetOnEvent($Start, '_start')
GUICtrlSetOnEvent($Stop, '_stop')
GUISetOnEvent($GUI_EVENT_CLOSE, '_exit')

While Sleep(10)
If $modus = True Then
$hWnd = WinGetHandle("BlueStacks App Player")
ControlClick($hwnd, "", "", "left",1, Random(10,25), Random(325,370))
Sleep(Random(1000,2000))
;;;;;;;;;;;; Hier sollte eigentlich dann $AngabeVON,$AngabeBIS stehen....
ControlClick($hwnd, "", "", "left",1, Random(339,355), Random(325,370))
Sleep(Random(1000,3000))
EndIf

WEnd
Func _exit()
Exit

EndFunc
Func _start()
$modus = True
EndFunc

Func _stop()
$modus = False
EndFunc
Howa2000 is offline  
Old 04/30/2015, 19:47   #4

 
Moneypulation's Avatar
 
elite*gold: 138
Join Date: Apr 2012
Posts: 3,494
Received Thanks: 1,769
Quote:
$nMsg = GUIGetMsg()
Switch $nMsg

Case $speichern
IniWrite("Config.ini", "Benutzerdaten", "von", GUICtrlRead($von))
IniWrite("Config.ini", "Benutzerdaten", "bis", GUICtrlRead($bis))

Case $GUI_EVENT_CLOSE
Exit
EndSwitch
Dieser Code funktioniert nicht, da ein Switch keine Schleife ist. Das heißt der Code wird nur 1x durchgelaufen, also reagiert dein Script nicht auf Buttons. Der Switch muss in einer Endlosschleife sein, wie z.B. in deiner While Sleep(10) Schleife.
Moneypulation is offline  
Old 05/01/2015, 16:07   #5
 
elite*gold: 0
Join Date: Apr 2015
Posts: 8
Received Thanks: 0
Vielen Dank für deine erneute Antwort :-)

Nun wenn ich es in die Schlaufe mache, dann lässt es sich nicht stoppen bzw er schreibt es n die Ini, ich kann danach aber die andere Funktion nicht mehr starten. Scheinabar macht er mit dem Buttom dann eine Endlosschlaufe mit dem Eintrag. Wie stelle ich es ein, dass er es nur einmal machen soll?

Habe wieder einige Stunden versucht aber ohne Erfolg... huihuihui
Howa2000 is offline  
Old 05/01/2015, 16:46   #6

 
Moneypulation's Avatar
 
elite*gold: 138
Join Date: Apr 2012
Posts: 3,494
Received Thanks: 1,769
Quote:
Originally Posted by Howa2000 View Post
Vielen Dank für deine erneute Antwort :-)

Nun wenn ich es in die Schlaufe mache, dann lässt es sich nicht stoppen bzw er schreibt es n die Ini, ich kann danach aber die andere Funktion nicht mehr starten. Scheinabar macht er mit dem Buttom dann eine Endlosschlaufe mit dem Eintrag. Wie stelle ich es ein, dass er es nur einmal machen soll?

Habe
wieder einige Stunden versucht aber ohne Erfolg... huihuihui
Poste mal deinen code
Moneypulation is offline  
Old 05/01/2015, 19:58   #7
 
elite*gold: 0
Join Date: Apr 2015
Posts: 8
Received Thanks: 0
Immer noch der letze den ich gepostet habe. Ich versuche immer was, dann gehts nicht und zurück zum start.
Howa2000 is offline  
Old 05/02/2015, 00:38   #8

 
Moneypulation's Avatar
 
elite*gold: 138
Join Date: Apr 2012
Posts: 3,494
Received Thanks: 1,769
Quote:
Opt("GUIOnEventMode",1)
Das war das Problem. Wenn du den Modus aktivierst, musst du den anscheinend auch einbehalten. Das heißt, du kannst Funktionen per Buttonklick nur noch so ausführen:

GUICtrlSetOnEvent($Start, '_start')

und nicht mehr in einer GUIGetMsg()-Schleife

Moneypulation is offline  
Thanks
1 User
Old 05/02/2015, 13:28   #9
 
elite*gold: 0
Join Date: Apr 2015
Posts: 8
Received Thanks: 0
Du bist echt Klasse! Werde es später direkt Testen! Vielen Dank! umademyday
Howa2000 is offline  
Reply


Similar Threads Similar Threads
Fehler suche (Anfangsprogramm) If schleife in einer If-Schleife
10/16/2013 - .NET Languages - 8 Replies
Wie mache ich eine If-Schleife in einer if-schleife? Danke^^ using System; using System.Collections.Generic; using System.Linq; using System.Text;
Quest-> Schleife in einer Schleife?
04/15/2013 - Metin2 Private Server - 3 Replies
Hallo Community, ist es möglich in einer bestehenden Schleife eine weitere einzufügen die unabhängig von der 1. schleife agiert?
Hilfe bei einer Schleife
04/21/2011 - AutoIt - 10 Replies
brauche Bitte etwas hilfe bei meiner Schleife, und zwar geht sie bis hier her einwandfrei: If $Goldold < $Gold Then $Output2 = 100 _GUICtrlEdit_AppendText($EDIT1, " " & "Jippi ey jaeh Du hast gewonnen" & @CRLF) Sleep(100) EndIf If $Goldold = $Gold Then
For-Schleife einer GUI untebrechen und mit Schließen einer andern GUI wiederaufnehmen
10/13/2010 - AutoIt - 7 Replies
Hi, ich hab folgendes AutoIT Problemchen und komm einfach nicht weiter. Zur Veranschauung des Problems hab ich mein eigentliches Programm mal auf einen Minimalcode reduziert. Das Programm macht so natürlich grad keinen großen Sinn, aber ich kann euch zeigen, wo's Hakt. Es geht darum: Ich hab ein Haupt-GUI von dem aus ich eine FOR-Schleife starte. Nun soll pro abgearbeiteten STEP der For-Schleife die Unter-GUI gestartet und aus der For-Schleife der Wert übergeben werden. Die...



All times are GMT +1. The time now is 04:32.


Powered by vBulletin®
Copyright ©2000 - 2026, 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 ©2026 elitepvpers All Rights Reserved.