Tratsch rund um Autoit / Autoit Talk | kleinere Fragen

02/17/2015 22:24 alpines#2236
Bevor die 2. Runde anfängt machst du einfach $st = Random(100000, 900000, 1) und fertig.
02/17/2015 22:30 Eagle300#2237
Ok prima. Danke für die Hilfe :)
02/18/2015 21:51 butter123#2238
mitten im script liefert mir
_IENavigate($oIE,"facebook.com/groups/" &$sGroup &"/")
plötzlich nen fehler.
The requested action with this object has failed.:
$o_object.navigate($s_Url)

IsObject($oIE) liefert true und 2 zeilen drüber ging auch noch alles andere mit dem IE objekt.... hat wer ne idee?


Edit:
Wenn ich vorher
_IEAction($oButtonLogin,"click")
auskommentiere, kommt kein fehler (bringt mir nur nichts, da ich dann nicht eingeloggt bin...)
Ein workaround mit _IEFormSubmit($oForm) liefert wieder den selben fehler wie oben.
02/18/2015 21:54 alpines#2239
Das passiert ab und zu, am besten schreibst du dir nen COM-Handler der den Fehler einfach ignoriert und die Aktion erneut durchführt.
02/18/2015 22:22 butter123#2240
fehler ignorieren und mehrfach ausführen bringt nichts, die seite läd nicht

Edit:
ich weiß nicht genau was ich gemacht habe, aber es funktioniert (erstmal?) wieder.
Einmal alle Plugins aktiviert und noch ein bisschen in den optionen bei cache usw rumgestellt. Dann gings. Jetzt hab ich alles wieder wie vorher und es geht trotzdem noch...
02/19/2015 22:30 butter123#2241
Nächstes Problem:

Ich will mit dem IE einer Facebookgruppe beitreten. So sieht der HTML-Code um den "Button" drum herum aus, mit dem man beitritt. Das mit dem # davor ist das Element auf das man klickt.
Wie komm ich an das Ding ran, wie führe ich es aus?


02/19/2015 23:31 alpines#2242
[Only registered and activated users can see links. Click Here To Register...]
$oIE.document.getElementsByTagName("a") returnt ein array. Da iterierst du einfach mal durch bis du den Button hast und _IEAction($oButton, "clicks") klickst ihn.
02/19/2015 23:54 butter123#2243
Komisch, sowohl _IELinkGetCollection($oIE) als auch $oIE.document.getElementsByTagName("a") liefern ein leeres array o.0

Edit: man muss es mit For In durchgehen^^

hmm leider gibts sehr viele mit role=button...
wie kann ich bei den elementen auf das zugreufen, was zwischen <a...> und </a> steht?
ich hätte jetzt $obj.title gedacht, aber da taucht keiner auf...

Edit: .innerText ist das wichtige

[Only registered and activated users can see links. Click Here To Register...]
02/22/2015 19:38 LittleJ3ossy#2244
Ist AutoIt gut für Einsteiger also für welche wie mich die noch nie was mit programmieren am Hut hatten ?
02/22/2015 20:42 alpines#2245
Ja, es ist auch für Fortgeschrittene sehr gut geeignet wenn man kleine Scripte schreiben muss weil es damit wesentlich schneller gescriptet ist. Die Syntax ist auch sehr einfach zu erlernen, da es allerdings eine nicht so bekannte Sprache wie C++ z.B. ist gibts dementsprechend nicht so viele gute Bücher / Tutorials.
02/22/2015 21:25 LittleJ3ossy#2246
Wie lange dauert es ungefähr bis man AutoIT beherrscht ?
Und kann man mit AutoIT Hacks coden?
02/22/2015 23:38 Clonko#2247
Das kommt ganz auf dich an.. Ich hatte mit AutoIt innerhalb weniger Stunden meine ersten Erfolge. Scripten war für mich aber kein komplettes Neuland.

Grundsätzlich? Ja.
02/23/2015 00:03 alpines#2248
Bitte gewöhne es dir jetzt schon an. Es heißt AutoIt, nicht "AutoIT".
Es wird schon seine Zeit dauern bis man das alles gut kann und das System versteht.

Hacks coden kann man damit, aber wenn es in Richtung D3D EndScene Hook gehen soll ist AutoIt die falsche Wahl.
02/23/2015 05:29 falaga#2249
Hey,
Ich wollte ein kleines Programm schreiben, dass einfach nur auf einen bestimmten Button klicken soll, wenn dieser sichtbar wird und dann solange wartet, bis er wieder sichtbar geworden ist, um ihn erneut anzuklicken. Die Position bleibt immer gleich, falls das von Interesse ist.
Hier ist der Code:
Code:
#RequireAdmin
#include<ImageSearch.au3>

HotKeySet("{NUMPAD1}", "Starten")
HotKeySet("{NUMPAD2}", "Pause")
HotKeySet("{NUMPAD3}", "Beenden")

$x1=0
$y1=0
$result1 = _ImageSearch("next.png", 1, $x1, $y1, 0)

While 1
   Sleep(50)
WEnd

Func Starten()

While 1
   Sleep(50)
	If $result1 = 1 Then
	   MouseClick("Left", $x1, $y1)
	   MouseMove(0, 0)
	   Sleep(5000)
	EndIf

 WEnd

 EndFunc

 Func Pause()
	While 1
	   Sleep(50)
	WEnd
 EndFunc

 Func Beenden()
	Exit 0
 EndFunc
Der Grund warum ich 5 Sekunden Sleep eingebaut habe, ist der, dass es etwa 1-2 Sekunden dauert bis der Button nach dem Klick verschwindet. Um sicher zu gehen eben 5 Sekunden. Nach dem Klick soll die Maus wegbewegt werden, damit der Button nicht verändert angezeigt wird, da die Maus auf dem Button liegt.
Der erste Klick funktioniert (der Button ist beim Start bereits sichtbar). Allerdings klickt das Programm nach den 5 Sekunden Sleep wieder auf die Koordinaten wo der Button war; der ist allerdings nicht mehr sichtbar. Das heißt, eigentlich müsste $result=0 gelten und der If-Bereich dürfte gar nicht mehr ausgeführt werden, sondern nur noch Sleep(50) von While 1, doch aus irgendeinem Grund klickt das Programm an die Stelle wo der Button war, obwohl dieser nicht sichtbar ist.
02/23/2015 09:06 alpines#2250
Du checkst nur einmal ob der Button verfügbar ist, du musst vor jedem If $result1 = 1 Then dein ImageSearch nochmal einbauen.