Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > Flyff > Flyff Hacks, Bots, Cheats, Exploits & Macros
You last visited: Today at 22:14

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[TUTORIAL] PostMessage mit AutoIT

Discussion on [TUTORIAL] PostMessage mit AutoIT within the Flyff Hacks, Bots, Cheats, Exploits & Macros forum part of the Flyff category.

Reply
 
Old   #1
 
elite*gold: 2
Join Date: Oct 2006
Posts: 218
Received Thanks: 138
[TUTORIAL] PostMessage mit AutoIT

Ich habe eine Anfrage bekommen wie man mit AutoIT Tasten und Mausklicks
an ein Flyff Fenster sendet. Ich denke da das mehrere Leute interessieren könnte, poste ich hier meine ausführliche Antwort auf die Frage.

Ob die Assembler Erklärung korrekt ist weiß ich nicht, sollte soweit auch
unwichtig sein.

Ich werde keine weiteren Fragen dazu beantworten.

Die benötigte .dll findet ihr hier:



einfach den Source Code oder kompilierte Version downloaden und
die Functions.dll Datei in das gewünschte Verzeichnis kopieren.

Ihr benötigt für die Ausführung folgendes:

Microsoft Visual C++ 2005 Redistributable Package (x86)



Quote:
Originally Posted by ...
Hiho,
ich hab grad dein Topic übers F-Tool-Extended gelesen.
Da ich soweit noch bissl Brain hab wollt mir selber was schreiben und drum hab ich etwas hier rumgesucht. Immo hab ich das Prob daß ich nicht genau weiß wie die Mouse und Keybefehle zu Fly durchkommen. Ich bekomme kein ControlSend, ControlClick oder MouseClick und dergleichen zustande. Das führte mich zu deinem Source und ich wolllt mir den mal ansehen. Da haste irgendwie noch was ausm anderem Spiel drin. Sieht irgendwie nach nem Bot für GW aus der mit Heros Zwergenpunkte farmt.
Würde mich freun wenn Zeit für ne Antwort oder Hilfe für mich hättest.
Immerhin hab ich gesehen das dir andere Sachen grad wichtiger sind.
Mfg
ControlClick und ControlSend steuert nur Controls an, das heißt grafische Benutzerobjekte wie zum Beispiel Buttons, Textfelder ect.. MouseClick würde nur
funktionieren wenn du eine asm Funktion integrierst die die Bits die gejumpt werden
bereits zuvor an die richtige Position stellst. Die DLL die ich benutze ist für die
Funktionen SendMessageA / PostMessageA / SetCurserPos ausgelegt. Send- und
PostMessage erbringen im Endeffekt das selbe Resultat, ich habe PostMessage benutzt.
die Message Befehle werden verglichen zu Control... an das Fenster gesendet, was
den Vorteil hat das Dieses nicht aktiv sein muss und auch versteckt sein kann.
Die Funktionen aus der DLL musst du wie folgt benutzen:

DllCall("Functions.dll", "none", "fnPostMessage", "HWnd", $feed_hwnd, "long", 256, "long", 48 + $feed_skill, "long",1)

Functions.dll ist die Bibliothek die aufgerufen wird, halt die dll.
der zweite Parameter wo "none" steht ist für den Wiedergabe Wert gedacht, den
wir aber nicht brauchen.

"fnPostMessage" steht für den Namen der Funktion die in der Bibliothek hinterlegt ist,
du brauchst fnPostMessage und fnSetCurserPos.

Alle jetzt folgenden Parameter sind die Parameter für die Funktion die du aufrufen
willst, also z.B. fnPostMessage. Du musst immer erst den Variablen Typ angeben und
danach die Variable bzw. den Wert selbst.

Als erstes habe ich "HWnd" und $feed_hwnd zu stehen.
HWnd steht dafür das der folgende wert ein Fenster Handle ist, also quasi die
einmalige Identifikation eines Fensters. Diese kannst du mit
WinGetHandle("title" [,"text" ]) ermitteln.

Nun zu "long" und 256.

PostMessage kann nicht nur normale Tastendrücke senden, sonder alle möglichen
Windows Messages, die kannst du dir in der AutoIt Hilfe Datei unter Appendix anschauen
um eine Taste an das Fenster zu senden benötigst du die Message 0x0100, das ist
WM_KEYDOWN. 0x0100 ist in hexadezimaler Schreibweise, welches in der dezimalen
Schreibweise 256 ergibt. Warum ich das umgerechnet habe weiß ich gerade auch nicht
mehr, die Hauptsache ist das du für die dezimale Schreibweise long benutzt und für
Hexadezimal int. Also so sieht das verglichen aus:
...."long", 256,....
...."int", 0x0100,....

Das vorletzte Pärchen der Parameter steht für den Tastendruck wenn du WM_KEYDOWN
benutzt (worüber ich gerade geschrieben habe).
hier benutzt du wieder long als Variablen Typ und bekommst
du die jeweiligen Tasten Codes her.

Abschließend musst du noch einmal "long",0 schreiben
wobei eine Erklärung jetzt überflüssig wäre, du kannst
es dir aber in der MSDN Sammlung anschauen falls
es dich interessiert.

Ich glaube ich habe jetzt erklärt wie man eine Taste
sendet deswegen schreibe ich dir mal ein
Pseudo Script:

$Fenster = WinGetHandle("FLYFF")

DllCall("Functions.dll", "none", "fnPostMessage", "HWnd", $Fenster, "long", 256, "long", 65, "long",1)
Das würde die Taste "a" an das Fenster schicken.

Somit wäre das Senden einer Taste schonmal geschafft.

Jetzt zeig ich dir noch in Kurzform wie man die
Maus benutzt und dann solltest du alles können
um dein Script zu basteln.

Es ist wichtig das der Mauszeiger an exakt der
Stelle ist wo hingeklickt werden soll, deswegen
brauchst du die .dll Funktion fnSetCurserPos
Hier brauchst du kein Fenster anzusteuern, sondern
gibst lediglich die X und Y Koordinaten für den
Mauszeiger an, welche den Typ int entsprechen
müssen.

Beispiel:

DllCall("Functions.dll","int","fnSetCursorPos","in t", 300, "int", 200)

(da kommt kein Leerzeichen beim 2. int hin, das ist irgendein Anzeigefehler)
Die 300 steht für die X Koordinate und 200 für Y.

Nun musst du nur noch die Maus dazu bringen zu klicken, dafür benutzt
du wieder fnPostMessage. Jetzt jedoch brauchst du
die Windows Message WM_LBUTTONDOWN, also
0x0201. Dann hast du mit dieser Message noch
die Möglichkeit andere Tasten zu drücken, was aber
unwichtig ist. Der Code für den Linksklick ist 0x0001.

Jetzt wird es etwas knifflig. Die Koordinaten für den
Mausklick gibst du nicht so wie oben an, sondern
als LPARAM. Das ist ein Parameter aus z.B. C++ den
es in AutoIt als solchen garnicht gibt.
Dafür musst du folgende Funktion benutzen:

Func _MakeLong($LoWord,$HiWord)
Return BitOR($HiWord * 0x10000, BitAND($LoWord, 0xFFFF))
EndFunc

$LoWord ist X, $HiWord ist Y.

Den Wert fügst du dann als letzten Parameter
mit den Typ long ein.

Nun musst du noch eine WM_LBUTTONUP Message
aufrufen um den Cursor los zulassen.
Copy & Paste deine .dll Funktion und füge statt
0x0201 0x0202 ein.

Pseudo Script:

Func _MakeLong($LoWord,$HiWord)
Return BitOR($HiWord * 0x10000, BitAND($LoWord, 0xFFFF))
EndFunc


$Fenster = WinGetHandle("FLYFF")

$X = 300

$Y = 200

$LPARAM = _MakeLong(300,200)

DllCall("Functions.dll","int","fnSetCursorPos","in t", 300, "int", 200)

DllCall("Functions.dll","int","fnPostMessage","hwn d",$Fenster,"int",0x0201,"int",0x0001, "long",$LPARAM)

DllCall("Functions.dll","int","fnPostMessage","hwn d",$Fenster,"int",0x0202,"int",0x0001, "long",$LPARAM)

Das war es an sich schon, nur noch ein paar Hinweise:

Die Koordinaten sind immer bezogen auf deine Auflösung, das heißt das du erst die Koordinaten
deines Fensters herausfinden musst (WinGetPos) und
dann die Koordinaten wo du im Endeffekt im Fenster
hinklicken möchtest hinzu addieren.

Um zu verhindern das die Maus während des automatischen
klickens bewegt wird ist BlockInput(flag) hilfreich.

Ich glaube das war alles

MfG Mankana
Mankana is offline  
Thanks
11 Users
Reply


Similar Threads Similar Threads
Autoit Tutorial
11/16/2010 - EO Exploits, Hacks, Tools & Macros - 4 Replies
Okay how to use autoit on EU demons. Okay to make a auto pill its very easy about four five lines.Okay so you always have to type While 1 Then you type Send and what you want it to type will be in the two ("{}"). So we have While 1 Send("{1}") then type how long it needs to sleep 1000+ So like Sleep(1000)
AutoIT Tutorial
12/29/2008 - Tutorials - 9 Replies
well i found that tut on the inet so i thot i can share it with you ppl don't know if its already posted i searched and did not find something Ok, first of all, if you’re a pro-hacker. This aint for you. My guide here is for all you people who beg for “bots” everywhere. AKA Leacher. Now, im doing this so you wont have to leach. In fact you can make your own bot very easily. Now I know many of you leachers probably have lower than average IQ’s or are very busy. I sincerely hope you...
Autoit Tutorial
01/29/2008 - AutoIt - 4 Replies
Hallo Liebe Com ich hab hier in letzter zeit immer was von dem Prog AUTOIT gehört das Scripts ausführt. Da hätte ich ein paar fragen... I Ist Autoit Scripten Schwer? II Wie lange braucht man bis man Sagen kann Ja ok ich Kann Autoit scripten (mit ner norm.Lern geschwindigkeit)? III Was für Möglichkeiten Bieten Autoit Scripts? (Kann man nur z.b Tastatur Anschläge Programiern oder auch Mausklicks bzw z.b das scannen von Monstern in einem MMoG)? IV Kennt ihr Gute tuts wo man es Gut Erklärt...



All times are GMT +1. The time now is 22:14.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.