ControlSend Problem

11/05/2010 16:57 Belur#1
Hey E*pvpers.

Bin grad dabei ein kleines F -Toll für Flyff zu schreiben. An sich ja ganz simpel.

Hab nur folgendes Problem:

Man kann Flyff 2 mal öffnen. Allerdings möchte ich nicht die F-Taste an beide Fenster senden sondern nur an eins. Die haben leider denselben Namen.

Gibt es eine Funktion wie ich im Bot speichern kann, welches Fenster er anpeilen soll. Bei alten Bots, die leider gefixt sind, konnte man erst ein Flyff Fenster aktiv haben und dan im Bot auf "FindFlyff" klicken. Daraufhin kam eine Zahl in ein Kästchen und nur an das Fenster wurden auch Befehle geschickt.

Muss nicht unbedingt die gleiche Metothde sein. Suche nur etwas, das ein Fenster klar angepeilt wird, und nicht jeder Befehl an beide gesendet wird.

Vllt kann mir da jmd weiterhelfen.

Lg

Niklas
11/05/2010 17:06 lolkop#2
dafür kannst du einfach direkt das handle vom fenster nehmen.
11/05/2010 17:24 Belur#3
Gibts ne Funktion, wie der das Handle vom Fester speichert und nur daran sendet?
11/05/2010 17:27 lolkop#4
senden kannste mit controlsend.
einfach statt titel das handle in die funktion und text leer lassn.

das handle bekommste per wingethandle oder controlgethandle, bzw winlist, wenn du von allen clients die handles einlesen willst
11/06/2010 19:33 Belur#5
Hab das unabhängig von dem handle, mit 2 Notepads getestet, das ControlSend an sich,

Komischerweiße sender er erstmal garnicht. Weder an das eine noch an das andere Fenster.

Erst wenn ein Fenster aktiv im Vordergrund ist, wird daran auch gesendet.
Also im Prinzip wie das normale Send.

Weiss jmd woran das liegt?
11/06/2010 20:07 lolkop#6
wird wohl ein antihack system sein.
11/06/2010 20:29 Belur#7
Quote:
Originally Posted by lolkop View Post
wird wohl ein antihack system sein.
Beim Notepad?
Wie gesagt: Ich probier das erstmal mit 2 Notepads. Die dienen mir als 2 Spielclienten.

Hab das aber schonmal mit ControlSend probiert. Allerdings war halt nur 1 Fenster des Clienten offen. Da hats einwandfrei geklappt.
11/06/2010 20:42 lolkop#8
hier mal ein kleines beispiel mit WinList
Code:
Run('notepad')
Run('notepad')
Sleep(1000)

$list = WinList('[CLASS:Notepad]')
ConsoleWrite('Es wurden '&$list[0][0]&' NotePad Fenster gefunden.'&@CRLF)
For $i=1 To $list[0][0]
	ConsoleWrite('Fenster '&$i&' hat das handle: '&$list[$i][1]&@CRLF)
Next

For $i=1 To $list[0][0]
	ConsoleWrite('Es wird nun "Fenster '&$i&'" an Fenster '&$i&' (hWnd: '&$list[$i][1]&') Gesendet.'&@CRLF)
	ControlSetText($list[$i][1], '', 'Edit1', 'Fenster '&$i)
Next
ich habe jetzt ControlSetText benutzt... mit ControlSend wäre es natürlich genauso =)
11/07/2010 18:33 Belur#9
Quote:
Originally Posted by lolkop View Post
hier mal ein kleines beispiel mit WinList
Code:
Run('notepad')
Run('notepad')
Sleep(1000)

$list = WinList('[CLASS:Notepad]')
ConsoleWrite('Es wurden '&$list[0][0]&' NotePad Fenster gefunden.'&@CRLF)
[COLOR="Red"]For $i=1 To $list[0][0][/COLOR]
	ConsoleWrite('Fenster '&$i&' hat das handle: '&$list[$i][1]&@CRLF)
Next

For $i=1 To $list[0][0]
	ConsoleWrite('Es wird nun "Fenster '&$i&'" an Fenster '&$i&' (hWnd: '&$list[$i][1]&') Gesendet.'&@CRLF)
	ControlSetText($list[$i][1], '', 'Edit1', 'Fenster '&$i)
Next
ich habe jetzt ControlSetText benutzt... mit ControlSend wäre es natürlich genauso =)
Ich hab mal die Stellen Rot markiert wo ich nicht ganz durchblicke.

1. Was ist genau die Variable $i ? Bze was heißt das [0][0] hinter dem $list?

2. Konnte ich nicht rot markiere weil ich nicht genau weiß wie es ausgedrückt ist im Code: Wie bestimmt man genau das Fenster an das gesendet werden soll und wie wird das Handle darin gespeichert bzw weiterverarbeitet :>


Wenn ich das Script so ausführe, öffnet sich 2 mal Notepad. In dem einen steht "Fenster1" in dem andren "Fenster2".
Komm noch nicht so ganz klar O.o

Sry. aber ich hoffe ich könnt mir nochmal weiterhelfen.

Lg
11/07/2010 18:55 MoepMeep#10
Quote:
Originally Posted by Belur View Post
Ich hab mal die Stellen Rot markiert wo ich nicht ganz durchblicke.

1. Was ist genau die Variable $i ? Bze was heißt das [0][0] hinter dem $list?
Keine Ahnung von Arrays und Schleifen aber bots schreiben wollen?
11/07/2010 19:37 Belur#11
Quote:
Originally Posted by MoepMeep View Post
Keine Ahnung von Arrays und Schleifen aber bots schreiben wollen?
Ich bin zwar ein Anfänger in AutoIt doch ich denke mir ein simpler Tastenbot ist noch zu schaffen. Das einzigste Problem ist ja eig. auch das Problem mit 2 gleichnamigen Fenstern.

Außerdem ist meiner Meinung nach ein Forum dazu da um sich gegenseitig zu helfen und Schwächen auszugleichen ect.
Ich weiss ja nicht wie du das siehst, aber sinnlose Beiträge helfen so gut wie keinem. Tdz Danke für deine Meinung dazu.
11/07/2010 19:41 MoepMeep#12
Die Grundlagen müssen vorhanden sein, vorher geht nichts :>

Bastel dir halt nen kleinen Prozesswatcher wo du den entsprechenden Clienten auswählst.
11/07/2010 19:53 Belur#13
Hab die Grundlagen 1 -4 durchgearbeitet.

Weiß nicht genau mit welchem TuT ich weitermachen könnte um vllt echt etwas mehr Wissen anzueignen :P
11/07/2010 20:09 MoepMeep#14
Quote:
Originally Posted by Belur View Post
Hab die Grundlagen 1 -4 durchgearbeitet.

Weiß nicht genau mit welchem TuT ich weitermachen könnte um vllt echt etwas mehr Wissen anzueignen :P
Das ist das Problem an den ganzen Tutorials zu AutoIt. Die Verfasser haben meistens selber keine Ahnung. Das sinnvollte wäre es vielleicht sogar, wenn du dir ein gescheites Buch zu einer X-beliebigen Programmiersprache holst um die Grundlagen der Programmierung zu lernen. Die Programmierung ist im groben in jeder Sprache gleich, nur die Syntax unterscheidet sich zum Teil stark und einige Sprachspezifische sachen. Danach kannt du ja, falls du das dann überhaupt noch willst, wieder zu AutoIt zurückkehren. Dann weißt du auch, was Array's und Schleifen sind :p
11/07/2010 20:17 Belur#15
:D Gibts überhaupt nen Buch zu Autoit.?

Zu andren Sprachen gibts ja mehrere aber hab noch nie von nem Buch zu AutoIt gehört.