|
You last visited: Today at 18:03
Advertisement
Gui's + While's?
Discussion on Gui's + While's? within the AutoIt forum part of the Coders Den category.
12/28/2011, 14:04
|
#16
|
elite*gold: 0
Join Date: Nov 2010
Posts: 45
Received Thanks: 5
|
Quote:
Originally Posted by lolkop
Du hast doch deine eine hauptschleife, in welcher du auf guiaktionen checkst. Dort baust du einfach über zustandsabfragen die jeweiligen Aktionen mit ein.
|
Hatte ich ja anfangs gehabt aber sobald ich dann bei der checkbox 2 sachen aktivieren lasse, läuft nur eine schleife durch
|
|
|
12/28/2011, 14:11
|
#17
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
Quote:
Originally Posted by Project_X
Hatte ich ja anfangs gehabt aber sobald ich dann bei der checkbox 2 sachen aktivieren lasse, läuft nur eine schleife durch 
|
du solltest allgemein nur eine schleife laufen lassen. da du beim gui sowieso schon eine schleife am laufen hast, wäre jede weitere schleife schlecht, da sie ja schonmal die gui-abfrage schleife ausser gefecht setzt.
|
|
|
12/28/2011, 14:12
|
#18
|
elite*gold: 0
Join Date: Nov 2010
Posts: 45
Received Thanks: 5
|
Quote:
Originally Posted by lolkop
du solltest allgemein nur eine schleife laufen lassen. da du beim gui sowieso schon eine schleife am laufen hast, wäre jede weitere schleife schlecht, da sie ja schonmal die gui-abfrage schleife ausser gefecht setzt.
|
Also gibt's so keine lösung, mehrer schleifen in einem programm unter zubringen o.o?
schuldige bin ein Anfänger
|
|
|
12/28/2011, 14:24
|
#19
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
Quote:
Originally Posted by Project_X
Also gibt's so keine lösung, mehrer schleifen in einem programm unter zubringen o.o?
schuldige bin ein Anfänger 
|
du baust dir das über zustände selbst auf. der zustand kann wahr oder falsch sein. ist er war, wird gesendet, ist er falsch wird nicht gesendet.
hier mal ein beispiel, wie du 2 dinge gleichzeitig über eine schleife verwalten kannst:
Code:
$zustand1=False ;<-- zustand vom ersten befehl auf [Aus]
$zustand2=True ;<-- zustand vom zweiten befehl auf [An]
While 1
If $zustand1 Then
[...]
EndIf
If $zustand2 Then
[...]
EndIf
WEnd
|
|
|
12/28/2011, 14:26
|
#20
|
elite*gold: 0
Join Date: Nov 2010
Posts: 45
Received Thanks: 5
|
Quote:
Originally Posted by lolkop
du baust dir das über zustände selbst auf. der zustand kann wahr oder falsch sein. ist er war, wird gesendet, ist er falsch wird nicht gesendet.
hier mal ein beispiel, wie du 2 dinge gleichzeitig über eine schleife verwalten kannst:
Code:
$zustand1=False ;<-- zustand vom ersten befehl auf [Aus]
$zustand2=True ;<-- zustand vom zweiten befehl auf [An]
While 1
If $zustand1 Then
[...]
EndIf
If $zustand2 Then
[...]
EndIf
WEnd
|
aaah ok, aber kann das programm dann auch mal ne nacht durchlaufen?.
also halt, wie in einer while schleife?
|
|
|
12/28/2011, 16:32
|
#21
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
das ist doch nur eine while schleife. <.<
in deinem falle wären deine zustände dann die checkboxen.
Code:
;--------Erstelle das GUI---------
GUICreate(...)
$box1 = GUICtrlCreateCheckbox(...)
$box2 = GUICtrlCreateCheckbox(...)
;---------------------------------
;-----Erstelle Endlosschleife-----
Do
;----Wenn Checkbox1 Aktiv, dann----
If BitAND(GUICtrlRead($box1),1) Then
[...]
EndIf
;----------------------------------
;----Wenn Checkbox2 Aktiv, dann----
If BitAND(GUICtrlRead($box2),1) Then
[...]
EndIf
;----------------------------------
Until GUIGetMsg()=-3 ;Wenn das gui geschlossen wird, springe aus endlosschleife
;---------------------------------
|
|
|
12/28/2011, 18:28
|
#22
|
elite*gold: 0
Join Date: Nov 2010
Posts: 45
Received Thanks: 5
|
Quote:
Originally Posted by lolkop
das ist doch nur eine while schleife. <.<
in deinem falle wären deine zustände dann die checkboxen.
Code:
;--------Erstelle das GUI---------
GUICreate(...)
$box1 = GUICtrlCreateCheckbox(...)
$box2 = GUICtrlCreateCheckbox(...)
;---------------------------------
;-----Erstelle Endlosschleife-----
Do
;----Wenn Checkbox1 Aktiv, dann----
If BitAND(GUICtrlRead($box1),1) Then
[...]
EndIf
;----------------------------------
;----Wenn Checkbox2 Aktiv, dann----
If BitAND(GUICtrlRead($box2),1) Then
[...]
EndIf
;----------------------------------
Until GUIGetMsg()=-3 ;Wenn das gui geschlossen wird, springe aus endlosschleife
;---------------------------------
|
Aaah ok ich hab's vielen dank, für deine Geduld
|
|
|
12/28/2011, 19:16
|
#23
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
poste mal nochmal deinen vollständigen fertigen code bitte.
würde gerne sehen ob du nun wirklich verstanden hast, wovon ich rede =)
|
|
|
12/28/2011, 22:17
|
#24
|
elite*gold: 0
Join Date: Nov 2010
Posts: 45
Received Thanks: 5
|
Quote:
Originally Posted by lolkop
poste mal nochmal deinen vollständigen fertigen code bitte.
würde gerne sehen ob du nun wirklich verstanden hast, wovon ich rede =)
|
PHP Code:
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_UseUpx=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <GUIConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Privat-Bot", 167, 127, 193, 125)
$Checkbox1 = GUICtrlCreateCheckbox("1.Skill", 8, 24, 81, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Checkbox2 = GUICtrlCreateCheckbox("2.Skill", 96, 24, 73, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Checkbox3 = GUICtrlCreateCheckbox("Exp-Scrolls", 8, 64, 81, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Checkbox4 = GUICtrlCreateCheckbox("Lilien", 96, 64, 57, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Checkbox5 = GUICtrlCreateCheckbox("Samen", 8, 96, 81, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
If BitAND (GUICtrlRead($Checkbox1), 1) Then
Send ("{1}")
Sleep (1000)
EndIf
If BitAND (GUICtrlRead($Checkbox2),1) Then
Send ("{2}")
Sleep (1000)
EndIf
EndSwitch
WEnd
So habe ich es momentan  , hab ich das denn so jetzt richtig gemacht?xd er öffnet's zwar nur schreibt er mir nicht die Zahlen 1 & 2?.
Warum genau nicht,? oder irgendwas falsch gemacht?
|
|
|
12/29/2011, 00:09
|
#25
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
das sieht soweit schonmal gut aus.
das hauptproblem hier liegt darin, das du die abfragen in deiner switch abfrage nur dann aufrufst, wenn dein programm beendet wird.
also statt das in deiner switch abfrage bei case exit anzuwenden, entweder in den case else zweig packen, oder unter die switch abfrage.
jetzt musst du noch von den sleeps weg kommen.
sleep sollte man in autoit allgemein nicht nutzen. stattdessen macht es viel mehr sinn mit timern zu arbeiten.
in deinem falle musst du für jedes send einen timer anlegen. hierfür gibt es die funktionen timerinit und timerdiff.
timerinit() gibt die aktuelle laufzeit deiner cpu in millisekunden aus. timerdiff($timestamp) berechnet die differenz von dem zeitstempel, welcher von timerinit erzeugt wird, und der aktuellen laufzeit.
wird also zb bei 500.000ms cpu laufzeit
angewendet, so speichert $timer jetzt 500.000.
wird dann 2ms später (also bei 500.002 ms cpu laufzeit)
Code:
$diff = timerdiff($timer)
angewendet, so wird $diff berechnet aus 500.002 - 500.000 und demzufolge auf 2ms gesetzt.
dh es sind 2ms vergangen...
setzen wir das nun in deinen code ein, so erhalten wir folgendes:
Code:
Dim $timer1, $timer2
$Form1 = GUICreate("Privat-Bot", 167, 127, 193, 125)
$Checkbox1 = GUICtrlCreateCheckbox("1.Skill", 8, 24, 81, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Checkbox2 = GUICtrlCreateCheckbox("2.Skill", 96, 24, 73, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Checkbox3 = GUICtrlCreateCheckbox("Exp-Scrolls", 8, 64, 81, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Checkbox4 = GUICtrlCreateCheckbox("Lilien", 96, 64, 57, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Checkbox5 = GUICtrlCreateCheckbox("Samen", 8, 96, 81, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
While 1
Switch GUIGetMsg()
Case -3
Exit
Case Else
If BitAND (GUICtrlRead($Checkbox1), 1) And TimerDiff($timer1)>=1000 Then
Send ("{1}")
$timer1 = TimerInit()
EndIf
If BitAND (GUICtrlRead($Checkbox2),1) And TimerDiff($timer2)>=1000 Then
Send ("{2}")
$timer2=TimerInit()
EndIf
EndSwitch
WEnd
vorteil hier ist, das du die timer beliebig für jede aktion einzeln setzen kannst =)
|
|
|
12/29/2011, 02:04
|
#26
|
elite*gold: 0
Join Date: Nov 2010
Posts: 45
Received Thanks: 5
|
Quote:
Originally Posted by lolkop
das sieht soweit schonmal gut aus.
das hauptproblem hier liegt darin, das du die abfragen in deiner switch abfrage nur dann aufrufst, wenn dein programm beendet wird.
also statt das in deiner switch abfrage bei case exit anzuwenden, entweder in den case else zweig packen, oder unter die switch abfrage.
jetzt musst du noch von den sleeps weg kommen.
sleep sollte man in autoit allgemein nicht nutzen. stattdessen macht es viel mehr sinn mit timern zu arbeiten.
in deinem falle musst du für jedes send einen timer anlegen. hierfür gibt es die funktionen timerinit und timerdiff.
timerinit() gibt die aktuelle laufzeit deiner cpu in millisekunden aus. timerdiff($timestamp) berechnet die differenz von dem zeitstempel, welcher von timerinit erzeugt wird, und der aktuellen laufzeit.
wird also zb bei 500.000ms cpu laufzeit
angewendet, so speichert $timer jetzt 500.000.
wird dann 2ms später (also bei 500.002 ms cpu laufzeit)
Code:
$diff = timerdiff($timer)
angewendet, so wird $diff berechnet aus 500.002 - 500.000 und demzufolge auf 2ms gesetzt.
dh es sind 2ms vergangen...
setzen wir das nun in deinen code ein, so erhalten wir folgendes:
Code:
Dim $timer1, $timer2
$Form1 = GUICreate("Privat-Bot", 167, 127, 193, 125)
$Checkbox1 = GUICtrlCreateCheckbox("1.Skill", 8, 24, 81, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Checkbox2 = GUICtrlCreateCheckbox("2.Skill", 96, 24, 73, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Checkbox3 = GUICtrlCreateCheckbox("Exp-Scrolls", 8, 64, 81, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Checkbox4 = GUICtrlCreateCheckbox("Lilien", 96, 64, 57, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Checkbox5 = GUICtrlCreateCheckbox("Samen", 8, 96, 81, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
While 1
Switch GUIGetMsg()
Case -3
Exit
Case Else
If BitAND (GUICtrlRead($Checkbox1), 1) And TimerDiff($timer1)>=1000 Then
Send ("{1}")
$timer1 = TimerInit()
EndIf
If BitAND (GUICtrlRead($Checkbox2),1) And TimerDiff($timer2)>=1000 Then
Send ("{2}")
$timer2=TimerInit()
EndIf
EndSwitch
WEnd
vorteil hier ist, das du die timer beliebig für jede aktion einzeln setzen kannst =)
|
Vielen Vielen dank  Funktioniert super & habe es sogar verstanden
Sehr nett von dir gewesen
|
|
|
 |
|
Similar Threads
|
Autoit Extra Gui's [32-Bit]
03/28/2011 - AutoIt - 17 Replies
Seit längerem habe ich eine art gefunden, echt tolle guis in Autoit zu realisieren.
Jetzt will ich euch zeigen wie es Funktioniert.
Vermerk!
Diese art Funktioniert nur bei 32-bit Pcs, dar die dazu benötigte dll für 32-bit ausgelegt ist!
Ich stelle euch alle 127 Skins zur verfügung.
Hier ein Beispiel:
|
Hi I Need Some Tips/Pointers to AutoIt/GUI's
12/30/2010 - General Coding - 0 Replies
Hi i just got AutoIt +Beta etc.
only thing is the "help" file is pretty darn useless to me...
it tells nothing of how to make a scrips work or what Comands i have to know or use them...
i whant to use the program so make small bots to deferent games... (most MMORPG)
if some one can give me a link to a step by step guide on how to make it work or can Email me the Comands and mby tell me how to put them together it would be real nice...
|
Hi I Need Some Tips/Pointers to AutoIt/GUI's
12/30/2010 - Main - 1 Replies
Hi i just got AutoIt +Beta etc.
only thing is the "help" file is pretty darn useless to me...
it tells nothing of how to make a scrips work or what Comands i have to know or use them...
i whant to use the program so make small bots to deferent games... (most MMORPG)
if some one can give me a link to a step by step guide on how to make it work or can Email me the Comands and mby tell me how to put them together it would be real nice... :D
|
Fragen zu GUI'S
12/07/2009 - AutoIt - 7 Replies
1. Hi, ich hab ein Programm mit zwei GUI's und wenn ich eine GUI schließe, schließen sich beide. Wie kann man ihm sagen, wenn man $GUI_EVENT_CLOSE
drückt, nicht gleich das ganze skript beenden soll?
2. Kann man die GUI irgendwie aktuallisieren, ohne das Programm neu zu starten?
|
All times are GMT +1. The time now is 18:03.
|
|