Schließen geht nicht

09/15/2010 13:43 .Resistance#1
Hi,
ich fange gerade mit AutoIT an und wollte mein erstes Programm mit GUI schreiben: ein Pickup Bot (ich weiß, einfallslos aber mir ist nichts anderes eingefallen)
Der Bot funktioniert super und ich kann starten, pausieren und beenden mit den Buttons und HotKeys, aber ich kann den Bot nicht beenden wenn ich im GUI Fenster auf "X" drücke (oben rechts)
Hier der Code:


mfg poll7979
09/15/2010 13:49 Psycho_Ente#2
Du brauchst das :
Quote:
Case $GUI_EVENT_CLOSE
Exit
In einer While schleife
Wenn es doch nicht geht, sry bin kein pro :P
09/15/2010 13:53 .Resistance#3
ich habe das doch schon hier:
PHP Code:
GUICtrlSetOnEvent($GUI_EVENT_CLOSE"_close"
09/15/2010 14:28 lolkop#4
schint so als wäre das bei guisetonevent bugged. aber ich verstehe nicht warum du nicht den einfacheren weg gehst und das ganze so aufbaust:
Code:
Global $play = False, $go = False

$GUI = GUICreate("PickupBot by poll7979", 300, 200)
GUISetState(@SW_SHOW)
$start = GUICtrlCreateButton("Start / Pause", 20, 110, 100, 50)
$end = GUICtrlCreateButton("Beenden", 150, 110, 100, 50, 0)
GUICtrlCreateLabel("Zu drückende Taste:", 20, 20) 
GUICtrlCreateLabel("Zeit zwichen den Klicks:", 150, 20)
$taste = GUICtrlCreateInput("y", 20, 60, 100) 
$zeit = GUICtrlCreateInput("100", 150, 60, 100)
GUICtrlSetTip($zeit, "1000 = 1 Sek")
GuiSetIcon(@ScriptDir & "\icon.ico", 0)
$context = GUICtrlCreateContextMenu()
$info = GUICtrlCreateMenuItem("About", $context)
HotKeySet("{f5}", "start")
HotKeySet("{f6}", "close")

Func start()
    $go = Not $go
EndFunc

Func play()
    $play = Not $play
EndFunc

While 1
	Switch GUIGetMsg()
		Case -3
			Exit
		Case $end
			Exit
		Case $start
			start()
		Case $info
			MsgBox(0, "Copyright", "Copyright by poll7979")
		Case Else
			If $play Then
				$taste1 = GUICtrlRead($taste)
				$zeit1 = GUICtrlRead($zeit)
				If $go Then
					Send($taste1)
					Sleep($zeit1)
				EndIf
			EndIf
	EndSwitch
WEnd
da hättest du wenigstens gleich noch eine cpu schonende funktion mit drinn. bei deinem script müsstest du vorher noch mit sleep zeitem rumspielen, um die cpu last zu senken.
09/15/2010 14:37 .Resistance#5
dein code fängt bei mir gar nicht an zu senden
ich hab auch mal nur deine while schleife am schluss gemonnen und miene funktionen und setoneven auskommentiert und es ging trotzdem nicht
und was heißt dieses: Case -3
also das "-3"?
09/15/2010 16:34 lolkop#6
$GUI_EVENT_CLOSE = -3

steht auch irgendwo in den includes sonst :P

btw ich weis nicht ob dein $play = not $play wirklich funktioniert... habs jetzt nicht getestet, aber ich würd das immer über if abfragen laufen lassen. das auslesen der variablen erst nach dem beschreiben kommando zu machen find ich persöhnlich nicht so schön

also kann sein das es daran liegt.
09/15/2010 19:54 | Moep |#7
Quote:
Originally Posted by lolkop View Post
$GUI_EVENT_CLOSE = -3

steht auch irgendwo in den includes sonst :P

btw ich weis nicht ob dein $play = not $play wirklich funktioniert... habs jetzt nicht getestet, aber ich würd das immer über if abfragen laufen lassen. das auslesen der variablen erst nach dem beschreiben kommando zu machen find ich persöhnlich nicht so schön

also kann sein das es daran liegt.
Ja funzt. Wenn $play ein bool ist, dann dreht $play =not $play den wahrheitswert einfach um. Dh aus true wird false und aus false wird true.
09/16/2010 02:02 Lawnmove#8
Quote:
$end = GUICtrlCreateButton("Beenden", 150, 110, 100, 50, 0)
GUICtrlSetOnEvent($end, "_close")
GUICtrlSetOnEvent($start, "_play")
GUICtrlSetOnEvent($GUI_EVENT_CLOSE, "_close")
Also das kann schon mal gar nicht funzen.
Wennn so, dann musste die 3 Events extra inne func packen und diese dann aufrufen.
Dann wird der Bot mit sicherheit beendet.