Fremdes Programm (Steam) steuern



  • Ich würde gerne eine Art Bot für das Programm Steam schreiben, der automatisch mit anderen Leuten Handeln kann, wenn sie die passenden Items (vorgegeben) in einen Slot legen. Ich habe nur leider keine Ahnung wo ich da Anfangen soll. Ich muss das ganze ja irgendwie abfangen, wenn der andere ein Item ins Handelfenster zieht, hat da jemand eine Idee wie man das machen könnte? Ich erwarte keinen fertigen Code, sondern eher Ansätze über die ich mich weiter Informieren kann 🙂

    Grüße!



  • ReadProcessMemory und WriteProcessMemory, aber ich sag mal, das wird schwer für jemanden der diese Frage stellen muss. (Und auch für andere Leute ist das nicht gerade trivial und potientiell viel Arbeit.)



  • cooky451 schrieb:

    ReadProcessMemory und WriteProcessMemory, aber ich sag mal, das wird schwer für jemanden der diese Frage stellen muss. (Und auch für andere Leute ist das nicht gerade trivial und potientiell viel Arbeit.)

    Bedeutet erstmal Steam mit Olly bzw. irgendeinem Debugger analysieren und die Adressen von den Items im Handelsfenster rausfinden? Geht da wirklich nix anderes? Ich dachte da an Packete abfangen oder ähnliches.


  • Mod

    Es gibt auch noch die direkte Methode, einen Bot zu programmieren, der einfach das Nutzerinterface benutzt. Das ist durchaus gängig bei Programmen, die zwar keine API anbieten, aber bei denen man komplexe Aktionen machen möchte. Im Speicher rumschreiben ist eher zum Cheaten und Cracken, nicht für die Benutzung.



  • Ja das stimmt, im Vollbildmodus (oder wenn das Fenster an der gleichen Stelle hängt) kann man im Prinzip die Farbe unter der Maus abfragen und dann einfach Aktionen ausführen. (Siehe SendInput)



  • Das mit dem Nutzerinterface hört sich ja ganz nett an um Aktionen durchzuführen, nur soll der Bot ja auch erkennen wenn die andere Person ein Item ins Handelsfenster zieht, wenn man eine Anfrage zum Handeln kriegt soll er die Annehmen. Zum Annehmen kann man ja das Interface benutzen, nur wie soll der Bot erstmal erkennen dass er eine Anfrage erhalten hat, bzw. welches Item jetzt im Handelsfenster ist? Habt ihr da Ideen wie man das realisieren könnte?


  • Mod

    Das muss er eben auch aus dem Nutzerinterface erkennen. OCR oder ähnliches, falls es Bilder sind. Falls es richtiger Text ist, kann man sich auch in das Nutzerinterface einhängen und diesen mitlesen. Das bedeutet nicht im Speicher lesen, sondern sich den Handle des Anzeigeelements der GUI besorgen und dieses auslesen. Das geht relativ einfach bei Standardelementen der Windowsoberfläche; falls die GUI irgendeine Eigenkreation des Herstellers ist, ist man ggf. wieder mit der OCR besser aufgehoben.

    P.S.: Du willst so etwas programmieren, oder?
    http://www.steamcardexchange.net/



  • Ja, sowas in der Art habe ich vor. Hast du da irgendwelche Tipps?

    PS: Ich glaube sogar die Inhalte von Steam sind per HTML dargestellt. Geht das da auch mit dem Inhalt auslesen?


  • Mod

    Killur schrieb:

    Ja, sowas in der Art habe ich vor. Hast du da irgendwelche Tipps?

    Konkret auf Steam bezogen? Nein, musst du selber rausfinden.

    PS: Ich glaube sogar die Inhalte von Steam sind per HTML dargestellt. Geht das da auch mit dem Inhalt auslesen?

    Das wäre dann doch besonders einfach.



  • Ich hab jetzt mal mit WinSpy++ versucht die ganzen Handles zu den einzelnen Buttons / Fenstern in Steam rauszukriegen. Aber die einzigen Handles die ich kriege sind die vom Hauptfenster und Freundefenster. Wie kann ich jetzt z.b. das Handle zu dem "Freund Hinzufügen"-Button im Freundefenster kriegen? Ist das ein Child? Wenn ich in WinSpy das Fenster auswähle und dann auf "Windows" gehe (was ich mal als Child-Windows) interpretiere dann steht da nichts...

    Grüße!


Anmelden zum Antworten