Tratsch rund um Autoit / Autoit Talk | kleinere Fragen

07/12/2012 10:03 Dr.Toni-old#316
Hehe danke schon mal :)

Könntest du es vielleicht berichtigen? :o
07/12/2012 10:07 iU0U2bm9E1Gir7gf#317
wie kann man eine variable aus einer funktion z.B:
Code:
$oIE = _IECreate($sUrl, 0, 1, 1)
als globale variable festlegen, sodass ich sie auch auserhalb der funktion noch nutzen kann?
07/12/2012 10:08 Lawliet#318
Füg einfach in der GUI Switch dein $Case button1 ein. Und was ausgeführt werden soll is eben Msgbox(0, GuictrlRead($input1), GuictrlRead($input2))

Nichts gegen dich, aber du solltest dir unbedingt nochmal die absoluten Grundlagen anschauen.

Code:
MsgBox ( 0, " $input1 ", " $input2")
Hätte einfach eine Msgbox aufgerufen, die $input1 als Titel und $input2 als Content hätte ;)

@Dark
Code:
Global $oIE = _IECreate($sUrl, 0, 1, 1)
07/12/2012 10:13 Dr.Toni-old#319
Und dank dir noch mal :)

Das heißt mein Code war im Endeffekt komplett unnötig geschrieben :( :)
Ich dachte ich hätte diese verstanden aber dann werd ich mir die Grundlagen mal wieder anschauen :)
07/12/2012 10:18 Lawliet#320
Schau dir am besten nochmal die Schleifen an ;)
While = während, If = wenn...
Ist eig. ziemlich einfach zu verstehen.
07/12/2012 10:20 Dr.Toni-old#321
Hehe werd ich machen :)

Den Teil hab ich dann bestimmt nur überflogen :o
07/12/2012 10:32 iU0U2bm9E1Gir7gf#322
danke nochmal Lawliet! dank dieser jetzt "globalen" Variable läuft mein Loginskript fehlerfrei und im Hintergrund :)

2 kleine Fragen rund ums Thema Pixelsearch:
1. Kann man bei PixelSearch die Position einer Flashdatei im Browser verwenden wo er dann losgeht und alles sucht?
2. Kann man es hinbekommen das AutoIt um einen bewegenden und gefundenen Pixel im PixelSearch einen Kreis zieht (z.B. Paint)?
07/13/2012 10:22 Papa Kobe#323
Sleep(3000)
ControlSend("METIN2", "", "", "{SPACE}")

Kann mir jemand sagen warum das Spiel diesen Code nicht annimmt? Mit Send gehts auch nicht :/
07/13/2012 12:49 Freddy​#324
Metin2 blockiert das normale ControlSend
07/14/2012 01:13 Dr.Toni-old#325
Nabend :)

Also ich wollte einen kleinen "Saver" schreiben :)
Mein Problem ist jetzt das er die Datei dann jetzt nicht öffnen will... Er gibt aber auch keinen Error aus :)

Code:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 516, 276, 192, 124)
$Label1 = GUICtrlCreateLabel("Toni's Saver", 152, 16, 212, 48)
GUICtrlSetFont(-1, 27, 400, 0, "Small Fonts")
GUICtrlSetColor(-1, 0xFF0000)
$Save = GUICtrlCreateInput("Type in what you want to save!", 112, 104, 281, 21)
$Button1 = GUICtrlCreateButton("Save", 56, 208, 123, 57)
$Open = GUICtrlCreateButton("Open", 312, 208, 123, 57)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

		Case $Save
		Case $Button1
		Case $Open
	EndSwitch
WEnd

If $Button1 Then FileWrite ("TonisSaver", " $Save ")

If $Open Then FileOpen ("TonisSaver")
Ich hoffe ihr könnt mir helfen :)
07/14/2012 01:23 Lawliet#326
Code:
If $Button1 Then FileWrite ("TonisSaver", " $Save ")

If $Open Then FileOpen ("TonisSaver")
FileWrite erwartet als ersten Parameter den Pfad, wo gespeichert werden soll (e.g. "C:\Downloads\test.txt", @desktopdir & "\test123\ka.txt").

Als zweiten erwartet FileWrite das was er schreiben soll. Wie bekannt sein sollte, musst du auch einen Input mit GuiCtrlRead($save) auslesen, da $save an sich nur die ControlID beinhaltet (Guictrlcreateinput gibt eine ControlID zurück).
Würden die Leute mal ihre GUIs selbst erstellen, wäre das auch nicht einer der häufigesten Fehler :rolleyes:

Keine Ahnung was du mit FileOpen erreichen willst :p FileOpen wird nur benötigt, wenn du schnell arbeiten willst, oder FileRead auf eine bestimmte weise lesen soll (Binary, Unicode x).

Benutz bitte einfach die Hilfe, welche bei Autoit dabei ist. Dort hättest du das auch lesen können ;)
07/14/2012 01:24 Dr.Toni-old#327
Hehe okay dank dir :)

€: Die Datei wird aber nicht im Download Ordner erstellt und kann somit auch nicht geöffnet werden :/

Code:
If $Button1 Then
FileWrite ("C:\Downloads\", @desktopdir & $Save)
EndIf

If $Open Then
FileRead ("TonisSaver")
EndIf
hab es jetzt so :/
07/14/2012 10:49 -STORM-#328
1. Sofern die zu lesende/schreibende Datei im selben Ordner wie das Script ist, bin ich mir ziemlich sicher, dass der Name ausreicht und kein Pfad nötig ist. Allerdings muss der Name eine Dateiendung beinhalten (z.B. .txt).


2. Was soll
Code:
If $Button1 Then
sein? Zum einen wird diese Stelle des Codes nie erreicht, da eine Endlosschleife davor steht und zum anderen müsste es wenn dann heißen:
Code:
If GUIGetMsg() = $Button1 Then
Sinnvoller wäre aber, einfach die gewünschten Befehle hinter (mit Absatz)
Code:
Case $Button1
in den Switch zu schreiben.


3. Was hast du mit FileOpen vor? Wenn du die Datei öffnen willst, um das Handle zu kriegen, solltest du den Befehl einfach vor FileWrite in denselben Case packen. Dann müsstest du allerdings auch das zurückgegebene Handle als Variable speichern und in FileWrite verwenden. Zwingend nötig ist das nicht, FileRead öffnet die Datei sonst auch selbst.
Oder hast du vor, dir die geschriebene Datei anzuzeigen? In dem Fall ist das auch nicht der richtige Befehl, da das Öffnen im Hintergrund passiert. Möglich wäre ShellExecute dafür zu nehmen, sodass die Datei automatisch im Editor oder sonstigem Programm geöffnet und angezeigt wird.

4. $Save muss ausgelesen werden, damit du an den eingegebenen String kommst. Das hat Lawliet doch bereits geschrieben aber auch in deiner neuen Version kommt kein GUICtrlRead vor.



Edit: Hier mal ne funktionierende Version. Ich bin davon ausgegangen, dass die Datei eine .txt ist und im selben Verzeichnis wie dein Script. Beides könnte gegebenenfalls geändert werden.
Im FileWrite habe ich noch einen Absatz eingefügt, sodass jeder String in eine neue Zeile geschrieben wird.
Außerdem bin ich davon ausgegangen, dass Open die datei anzeigen soll und habe das mit ShellExecute gelöst. Falls du etwas anderes meintest, kannst du den Befehl natürlich durch einen anderen ersetzen.
Die MsgBoxen können entfernt werden, sie zeigen bloß an, dass die entsprechenden Buttons gedrückt wurden.
PS: Vier der fünf Includes sind für dieses Script unnötig, da nichts darin enthaltenes vorkommt. Habe sie einfach mal auskommentiert, da das unnötig Speicher frisst.
07/14/2012 12:34 Lumi#329
Außerdem kommen Variablen immer außerhalb der Ausführung strichen..("...")
07/14/2012 22:28 Miichiii#330
Hey :D

Ich hab auch mal ne kleine Frage.. Und zwar.. Ich hab ne kleine Gui mit 3 Inputfeldern, und daneben 3 Buttons..
Kann man das irgendwie schaffen, dass wenn man in Input1 Enter drückt, Button1 geklickt wird, Input 2 -> 2, Input3 -> 3?

und ob sich jemand mit Fiesta Online auskennt.. Hab da paar Probleme mit ControlSend...