Problem mit AutoIt UDF

10/11/2012 19:28 derrod#1
Hey Leute,
ich beschäftige mich in letzter Zeit mit Autoit, da ich einen Bot programmieren will (hab nur Erfahrung mit c++).

Ich wollte meinen Quelltext auch durchstrukturieren, indem ich UDF's verwenden wollte. Das Problem ist, wenn ich das Programm starte und die Funktion aufrufe, kommt nie die Variable raus die es sein sollte, sondern immer nur "9".

Code:
	Func _Bot($CD_sk2)

		MsgBox(524320, "Testprogramm", "Variable:" & @CRLF & $CD_sk2)

	EndFunc
Ich weiß, dass hier noch was fehlt... ;)

Zuvor habe ich die Variable so den User definieren lassen:

Code:
        $CD_sk2 = GUICtrlCreateInput("0", 160, 50, 40)
Was hab ich falsch gemacht?
Vielen Dank für Eure Hilfe :D

Derrod
10/11/2012 19:43 Ludder231#2
Du musst, wenn du ein GUI Element untersuchen/auslesen willst, immer GuiCtrlRead($CD_sk2) machen
Also GuiCtrlRead($variable vom Input).

MfG Ludder231
10/11/2012 19:58 derrod#3
Danke! so gehts! :D

Sorry! auf den ersten Blick schien es, als würde es gehen, es geht aber doch nicht :/ ich hab jetzt folgendes:

Code:
      $CD_sk2_I = GUICtrlCreateInput("0", 160, 50, 40)
      $CD_sk2 = GuiCtrlRead($CD_sk2_I)
     _Bot($CD_sk2)
Und in der Funktion noch das Gleiche:

Code:
	Func _Bot($CD_sk2)

		MsgBox(524320, "Testprogramm", "Variable:" & @CRLF & $CD_sk2)

	EndFunc
Der Unterschied zu oben: jetzt kommt als Zahl immer das raus, was ich bei GUICtrlCreateInput als ersten Parameter genommen habe!

Nochmals Danke für die Hilfe! :)
10/11/2012 21:02 V8II#4
Ich denke was du suchst ist Inputbox, nicht GuiCtrlCreateInput ?
10/11/2012 21:10 derrod#5
Wo ist da der Unterschied?
10/11/2012 21:33 H@CT0R#6
Quote:
Originally Posted by derrod View Post
Danke! so gehts! :D

Sorry! auf den ersten Blick schien es, als würde es gehen, es geht aber doch nicht :/ ich hab jetzt folgendes:

Code:
      $CD_sk2_I = GUICtrlCreateInput("0", 160, 50, 40)
      $CD_sk2 = GuiCtrlRead($CD_sk2_I)
     _Bot($CD_sk2)
Und in der Funktion noch das Gleiche:

Code:
	Func _Bot($CD_sk2)

		MsgBox(524320, "Testprogramm", "Variable:" & @CRLF & $CD_sk2)

	EndFunc
Der Unterschied zu oben: jetzt kommt als Zahl immer das raus, was ich bei GUICtrlCreateInput als ersten Parameter genommen habe!

Nochmals Danke für die Hilfe! :)
der erste paramater ist bei guictrlcreateinput der wert, der in der inputbox steht, wenn der user nichts daran geändert hat (der also von anfang an schon drinnen steht)
trägst du also keinen wert in die inputbox ein, wird dieser wert benutzt
10/11/2012 21:39 derrod#7
okay, aber wenn ich einen Eintrage, kommt trotzdem dieser Wert! Igrendetwas läuft schief! ich hab keine ahnung was :/

hier (aus dem TuT von Forsaken) funktioniert das alles auch:

Code:
#include <GUIConstantsEx.au3>

GUICreate("Forsaken's Bot", 335, 100)

GUISetState(@SW_SHOW)

GUICtrlCreateLabel("Key", 8, 10)
$key1 = GUICtrlCreateInput("", 35, 8, 120)
GUICtrlCreateLabel("Time", 8, 44)
$time1 = GUICtrlCreateInput("", 35, 40, 120)

$startbutton = GUICtrlCreateButton("Start", 190, 8, 60)

While 1
	$msg = GUIGetMsg()
	
	Select
		
		Case $msg = $startbutton
				$send1 = GUICtrlRead($key1)
				$sleep1 = GUICtrlRead($time1)
			While 1	
				Send($send1)
				Sleep($sleep1)
			WEnd
				
		Case $msg = $GUI_EVENT_CLOSE
			GUIDelete()
			ExitLoop
			
	EndSelect
		
WEnd
Asche auf mein Haupt... ich habe den Fehler entdeckt! ich habe die Variablen sofort zugewiesen, ohne dass der Nutzer die Möglichkeit hatte etwas daran zu ändern....

Wenn man den ganzen Tag an einem Quelltext sitzt übersieht man sowas... Mist! :facepalm:

Ich danke Euch allen sehr herzlich!