text von anderem Programm(Spiel) erfassen
-
Hallo
Ich habe früher ein Programm auf dem Rechner gehabt( lange her, weiß nicht in welcher Programmiersprache es geschrieben wurde), welches mit einem Spiel kommuniziert. Um genauer zu sein, wenn man in diesem Spiel die Konsole öffnet und einen Befehl eingibt, hat das Programm diesen Befehl erhalten und dementsprechend das Fenster minimiert, ein anderes Programm geöffnet, usw.
Nun wollte ich selbst versuchen so ein Programm zu schreiben, jedoch sind mir ein paar Punkte zur Realisierung noch unklar:Kann ich das ganze mit named pipes realisieren? wenn ja, wie kann ich eine eigenständige exe(ein Spiel) mit einem c++/c Programm mittels named pipe verbinden?
wie kann ich einen Befehl der im Spiel in die Konsole eingegeben wurde abfangen?
Bis jetzt habe ich mit
findWindow(NULL, "ProgrammName)
das Laufende Spiel gefunden, jedoch wars das auch schon.
Ich würde mich über ein paar Denkanstöße freuen
Lg
-
Dieser Thread wurde von Moderator/in SideWinder aus dem Forum DOS und Win32-Konsole in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Du kannst z.B. versuchen eine Funktion, welche den Text, der in die Konsole eingegeben wurde (die Konsole hat das Spiel aber schon, oder?) auswertet mittels Detours zu Hooken und diesen Text/Command dann so verarbeiten wie du lustig bist
Mit dem Begriff Named Pipes kann ich im Moment nur begrenzt etwas anfangen. Hast du dafür ein Buch/Tutorial, wo du das gelernt hast? Würde mich selbst auch sehr interessieren.
-
haben in der Uni mit (named)pipes gearbeitet, und da hab ich mir gedacht, dass das mit denen doch möglich sein müsste.
ja, die Konsole hat das Spiel schon, aber wie kann ich auf die zugreifen?
-
Die "Konsole" eines Spiels hat erstmal nichts mit dem stdin / stdout eines "Konsolenprogramms" zu tun. Was so viel heißt wie: Wenn das Spiel die Eingabe nicht explizit an eine bspw. Named Pipe schickt, kannst du auch nichts aus einer solchen lesen.
Die einzige Chance, die du hast, wird sein die Tastatureingaben, mit oben genannter Hooking-Methode, abzufragen und diese selbst zu interpretieren.Greetz
-
alles klar, vielen dank
-
Du kannst versuchen mit WindowFromPoint das Fenser-Handle der Konsole zu bekommen und dann mit GetWindowText und SetWindowText den Inhalt auslesen und bearbeiten.
Das funktioniert nur wenn die Konsole ein eigenes Fenster ist (sie kann auch einfach nur aufs main-Window gemalt worden sein) und es die SetWindowText und GetWindowText-Messages unterstützt.