Checkbox abfragen

11/05/2010 11:12 eagly200#1
Hi liebe Com.,
Da ich mit der Suchfunktion nichts passendes gefunden habe, frage ich euch...:
wie kann ich in diesem Skript:
Code:
$Form1 = GUICreate("SpammBot by Laex", 290, 94, 192, 120)
GUICtrlCreateLabel("Was willst du Spammen?",8,8)
$Text = GUICtrlCreateInput("", 8, 24, 185, 21)
$Button1 = GUICtrlCreateButton("LOS SPAMMEN...", 8, 48, 185, 41, $WS_GROUP)
$Checkbox1 = GUICtrlCreateCheckbox("Mit Enter", 200, 3, 89, 57)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button1
			ExitLoop
		Case $Checkbox1
			$Text2  =   GUICtrlRead ($Text) & ("{Enter}")
		Case $Checkbox1 = False
			$Text2 = GUICtrlRead($Text)

	EndSwitch
WEnd
Sleep (2000)
While 1

	Sleep (20)
	Send  ($Text2)

WEnd
(ist zwar nicht das ganze aber soreicht das)
wie kann ich dort die Checkbox auslesen?
also so ob jetzt d checkbox angeklickt wurde?
und wenn ihr was am Skript verändert dann bitte niicht zu viel weil ich mal endlich ein (fast) komplett allein geschriebenes Skript haben wollte...
11/05/2010 12:36 lolkop#2
if guictrlread($checkbox)=1 then ...
11/05/2010 12:51 eagly200#3
und wenn se nicht so ist?
dann etwa 0`?
11/05/2010 13:33 eagly200#4
also mein jetztiges skript sieht so aus:
Code:
  #cs ----------------------------------------------------------------------------

 AutoIt Version: 3.3.4.0
 Author:        Laex

 Script Function:
	Spammbot
#ce ----------------------------------------------------------------------------


#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("SpammBot by Laex", 290, 94, 192, 120)
GUICtrlCreateLabel("Was willst du Spammen?",8,8)
$Text = GUICtrlCreateInput("", 8, 24, 185, 21)
$Button1 = GUICtrlCreateButton("LOS SPAMMEN...", 8, 48, 185, 41, $WS_GROUP)
$Checkbox1 = GUICtrlCreateCheckbox("Mit Enter", 200, 3, 89, 57)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button1
			ExitLoop
		if GUICtrlRead($Text) = 1 Then
			 $Text2 =  $Text + ("{Enter}")
		 EndIf

	EndSwitch
WEnd
Sleep (2000)
While 1

	Sleep (70)
	Send  ($Text2)

WEnd
und das ist der komplette Code.
11/05/2010 14:21 lolkop#5
ich würde mal sagen, wenn die checkbox nicht aktiviert ist, ist das ergebnis wohl nicht 1...
11/05/2010 15:21 eagly200#6
und was soll ich deiner Meinung nach damit machen?
11/05/2010 15:32 lolkop#7
-.-
Code:
if guictrlread($checkbox) = 1 then
    checked()
else
    unchecked()
endif
wenn etwas nur zwei zustände haben kann, reicht es doch vollkommen einen zustand zu kennen, um eine abfrage zu starten.
11/05/2010 15:35 eagly200#8
ich versteh jetzt nicht ganz was dein Code verdeutlichen soll....
ich brauch eig nur das so, wenn die Box Angeklickt wurde soll die Veriable noch mit Enter versehen werden soll.
Oder eine Neue Variable entweder nichts oder Enter ist...
11/05/2010 15:44 lolkop#9
du willst also einen fertigen code? verstehe zwar nicht so ganz wie dich das weiter bringt, aber hier:
Code:
Dim $timer, $run= False, $name[2] = ['Start Spam','Stop Spam']
$gui = GUICreate("SpammBot by Laex", 290, 94, -1, -1, 0x10CA0000,8)
GUICtrlCreateLabel("Was willst du Spammen?",8,8)
$text = GUICtrlCreateInput("", 8, 24, 185, 21)
$go = GUICtrlCreateButton($name[0], 8, 48, 185, 41)
$checkbox = GUICtrlCreateCheckbox("Mit Enter", 200, 3, 89, 57)

While 1
	Switch GUIGetMsg()
		Case -3
			Exit
		Case $go
			$run = Not $run
			GUICtrlSetData($go, $name[$run])
		Case Else
			If $run And Not WinActive($gui) And TimerDiff($timer) > 70 Then
				$msg = GUICtrlRead($text)
				If GUICtrlRead($checkbox)=1 Then $msg&='{enter}'
				Send($msg)
				$timer = TimerInit()
			EndIf
	EndSwitch
WEnd
11/05/2010 15:47 eagly200#10
NEIN,ich will keinen fertigen code, ich will nur wissen wie ich das machen kann, das wenn die Box makiert wurde eine Variable ("{Enter}") wird und wenn die Box unaktiviert ist das diese Variable nichts ist.
und dann soll diese Variable in einer Endlosschleife gesendet werden....
11/05/2010 15:54 Memphiisto#11
Also ich hab meine Chekbox so abgefragt :)

PHP Code:
If GUICtrlRead($Checkbox1$GUI_CHECKEDThen 
lg Magic
11/05/2010 15:57 lolkop#12
du befindest dich beim abfragen des guis bereits in einer endlosschleife. wenn du eine zweite endlosschleife in dieser endlosschleife startest, kann deine hauptschleife nichtmehr abgearbeitet werden.
genau deshalb ist es sehr wichtig deinen code immer komplett in der hauptschleife laufen zu lassen. jede weitere endlosschleife schneidet etwas vom restcode ab.

und wenn du schon eine variable für den inhalt des inputs hast, wäre es doch wohl deutlich einfacher im falle der aktivierten checkbox einfach das enter an den inhalt des inputs zu hängen, als eine neue variable zu erstellen, die auchnoch mit 2 zuständen definiert werden muss.
11/05/2010 16:02 eagly200#13
ja stimmt, ich hab das aber so versucht, es ging abeer nicht...
und ich hab ja extra Exit Loop eingefügt damit die erste schleife beendet wird...
11/05/2010 16:18 lolkop#14
du kannst dir ja mal den code anschauen den ich gepostet habe.

will dich ja zu nix nötigen, aber ich würde dir empfehlen anzufangen, deinen codestil zu überdenken.
so ist es zb IMMER möglich statt sleeps timer zu nutzen.

und es ist auch immer möglich schleifen zu verbinden =) man muss sich natürlich einen weg überlegen, wie man das am besten anstellt.
ich habe für mich den weg über zustandsvariablen gefunden, und finde das ganze so recht einfach lösbar =)

in dem beispiel was ich geschrieben habe ist eine zustandsvariable zb $run.
$run kann wahr oder falsch (1 oder 0) sein. wenn $run 1 ist, führst du deine aktion in deiner hauptschleife aus. ist $run 0, so wird nur die gui abfrage ausgeführt =)
11/05/2010 16:28 eagly200#15
Ok danke für den Tipp... ich warte glaub ich mal bis ich ein bisschen mehr Zeit habe und dann lerne ich Autoit in und auswendig.