Da dieser Thread noch recht aktuell ist und zumindest im Ansatz mein Problem behandelt, hoffe ich, dass meines hier gelöst werden kann.
Ich versuche mir einen zwar sehr simplen, aber nicht minder nützlichen "Follow-Bot" zu basteln. Beim Cleanen ist das raus reisen ja schnuppe, denn es geht mir nur um die Helden, aber sobald es in einen Dungeon geht oder man mal mehrere Gebiete hintereinander cleanen will, ohne auf die Helden verzichten zu müssen, wie beispielsweise in Kryta, Wüste... ach, papperlapapp... in ganz Tyria
, wird es schwierig bzw ein viel zu großer Zeitaufwand.
Das Problem, dass sich mir stellt, liegt nicht in den Befehlen selbst, sondern, dass ich es nicht hinbekomme, dass der Bot die Befehle an die zweite auf meinem Desktop ausgeführte Instanz von GW sendet, die dann natürlich minimiert und im Hintergrund bleiben soll.
Mein Versuch (mit dem ich mir hoffentlich nicht allzu viele "Oh Mann, guck doch mal da!"'s einfange
):
Code:
While 1
$handle = ControlGetHandle("Guild Wars", "[CLASS:ArenaNet_Dx_Window_Class]", "")
If $handle = (ermittelte Handle der GW-Instanz) Then
ControlSend("[CLASS:ArenaNet_Dx_Window_Class]", "", "", "{NUMPAD8}")
Sleep(1000)
ControlSend("[CLASS:ArenaNet_Dx_Window_Class]", "", "", "{NUMPAD9}")
Sleep(2000)
EndIf
WEnd
Ich hab's auch mit diversen anderen Befehlen versucht, wie der Angabe von Instance:2 in ControlGetHandle- und ControlSend-Befehlen. Auch dem Bot eine kleine Eselsbrücke zu bauen, dem WinWaitNotActive, dass er merkt: "Ah, okay, das inaktive Fenster soll ich bedienen! Zu Befehl, Sir!" hat nichts bewirkt. Das Ergebnis ist in allen Fällen gleich. Die Zahlen 8, 9... 8, 9 werden ausschließlich an das aktive Fenster geschickt, selbst wenn es der Notepad ist.