Quote:
Originally Posted by DexXxo
Hey hätte mal eine Frage,
wie bekomme ich aus Spielen bestimmte Textboxen oder wie kann ich einfach nur eine bestimmte taste an das Spiel senden ohne es auf haben zu müssen? :) Müsste doch eig möglich sein mit der SendMessage Methode? Nur ich glaube das "SETTEXT" hindert mich daran weil er ja nix ersetzen soll sondern einfach nur die bestimmte taste senden soll :) Wäre echt super wenn du mit helfen könntest.
PS: Es handelt sich um Nostale.
LG
|
Habe leider kein Nostale auf dem Rechner, nur Tera (welches auch von GameForge ist). Also die verschiedenen Textboxen und Buttons usw denke ich wirst du mit dieser Methode eher nicht finden. Jedoch habe ich kurz mal versucht, den Chat (durch die Enter Taste) zu öffnen, eine Nachricht zu schreiben und diese dann abzuschicken. Hat ohne Probleme funktioniert. Dazu habe ich jedoch nicht WM_SETTEXT benutzt, da ich dazu die Textbox für den Chat bräuchte (was ich jedoch nicht finden kann da es sich um ein Spiel handelt) sondern WM_KEYDOWN/UP & WM_CHAR:
PHP Code:
Const WM_KEYDOWN As Integer = &H100
Const WM_KEYUP As Integer = &H101
Const WM_CHAR As Integer = &H102
PHP Code:
//Hauptfenster vom Spiel finden
Dim TeraClient As IntPtr = FindWindow("LaunchUnrealUWindowsClient", "TERA")
//Enter drücken um den Chat zu öffnen
SendMessage(TeraClient, WM_KEYDOWN, Keys.Enter, 0)
SendMessage(TeraClient, WM_KEYUP, Keys.Enter, 0)
//nicht unbedingt notwendig, aber wenn ich es weglasse
//passiert es abundzu, dass die Nachricht nicht ins Chatfenster eingefügt wird
Threading.Thread.Sleep(50)
//deine Nachricht
Dim nachricht As String = "hallo"
//alle Zeichen durchgehen und senden
For Each c As Char in nachricht
SendMessage(TeraClient, WM_CHAR, Asc(c), 0)
//hier könnte man evtl. auch Sleep einbauen, falls nicht alle Zeichen abgesendet werden
Next
//wieder nicht unbedingt notwendig, aber klappt zumindest bei mir so immer
Threading.Thread.Sleep(50)
//Enter drücken um die Nachricht abzuschicken
SendMessage(TeraClient, WM_KEYDOWN, Keys.Enter, 0)
SendMessage(TeraClient, WM_KEYUP, Keys.Enter, 0)
Ob es eine elegantere Lösung statt WM_CHAR gibt weiß ich nicht, weil ich das mal schnell in 5min getestet habe und es hat wie gesagt ohne Probleme funktioniert. Ob du damit nun auch dein Inventar öffnen kannst (z.B. mit der I Taste) oder deinen Char nach vorne bewegen kannst mit W usw musst du einfach mal testen.
Quote:
Originally Posted by LauniSoft
Sehr gutes Tutorial. :handsdown:
|
Danke :)