Entwickler-Ecke
Windows API - Problem beim ansprechen eines externen Fensters
Unknown - Mo 02.06.08 12:31
Titel: Problem beim ansprechen eines externen Fensters
Hallo,
ich hab mir ma nen Prog gebastelt, mit denen ich Strings oder TastenBefehle an inaktive Fenster Senden kann.
Das war alles noch gut und einfach.
Um die ganzen Handles rauszubekommen habe ich WinSpy benutzt.
Hier mein jetziger Code:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| procedure SendString(ClassnameParent, ClassnameChild, Windowname :PAnsiChar); var wndMain,wndChild: HWND; i: Integer; s: string; begin wndMain := FindWindow(ClassnameParent,Windowname); if wndMain <> 0 then begin wndChild := FindWindowEx(wndMain, 0, ClassnameChild , nil); s := 'Klappt :D'; for i := 1 to Length(s) do SendMessage(wndChild, WM_CHAR, Word(s[i]), 0); end; end; |
Und dann aufgerufen mit :
Delphi-Quelltext
1:
| SendString('WordPadClass', 'RICHEDIT50W', 'Test - WordPad'); |
Das lief alles ganz gut =).
Nur möchte ich jetzt ein DirectX Programm ansprechen, halt nen kleinen Bot schreiben =).
Nur bekomme ich mit WinSpy nicht die geschünschten Handles.
Jetzt meine Frage, wie könnte ich das machen.
Danke schonmal für Hilfen
MfG Unknown
Unknown - Mo 02.06.08 18:22
Kann mir keiner helfen ?
Es handelt sich um das Spiel FlyFF.
Wenn das einen was sagt.
Strings wie "Hallo", "Geh Weg ! ^^" und so schicken.
MfG Unknown
Unknown - Di 03.06.08 14:04
Hmmm.... Vielleicht habe ich meine Frage schlecht gestellt.
Also, um mit dem obigen Code Arbeiten zu können brauche ich doch Handles etc.
Wie bekomme ich die aus einem Spiel heraus.
Sprich das Fenster selber und die Buttons die im Spiel sind.
Wenn ihr was nicht versteht, fragen, nicht nix sagen.
MfG Unknown
ZeitGeist87 - Di 03.06.08 20:20
Hmm..ich weiß nicht, ob das bei einem Spiel einfach so ohne weiteres Möglich ist..
Hast du da mal versucht, mit WinSpy draufzugehen?
Kannst du das Spiel im Fenstermodus starten?
Unknown - Di 03.06.08 20:31
WinSpy => Ja
Fenstermodus => Ja
ZeitGeist87 - Di 03.06.08 20:45
Hmm...ich glaub nicht, dass du auch großartig viele Möglichkeiten hast, darauf zu kommen..denn das ganze wird ja nicht so programmiert wie Delphi, sondern eher gezeichnet - oder irre ich mich?
Unknown - Di 03.06.08 20:49
Ja das tust du :D.
Ich meine , bzw ich weiß, das Buttons in 3D Programmen auch Handles haben :P.
btw, viel Spaß bei CSS, vllt treffen wir uns da ;D
@Marc: also wenn ich mit C++ und directX progge haben die immer ne bestimmte ID, und somit doch auch ein Handle oder ?
---
Moderiert von
Narses: Beiträge zusammengefasst---
Und ´kann man den ne Nachricht einfach ans fenster senden ?
Unknown - Fr 06.06.08 14:41
Weiß echt keiner wie man das Handle rausfinden könnte oO
Ich will ja nur Befehle ans Fester senden....
MfG Unknown
Clemens L. - Fr 06.06.08 14:56
Das Handle vom Fenster kannst du anhand des Fenstertitels erhalten!
Delphi-Quelltext
1:
| Handle := FindWindow(nil,WindowTitle); |
Glaub jedenfalls das es so geht!
_frank_ - Fr 06.06.08 15:49
was für Befehle willst du an das fenster schicken bzw. was soll das Spiel damit machen?
wenn es nur Tastenkombinationen (bzw. Tastatureingaben) sind hilft evtl. KeybdEvent. ich denke mal, anders kommst du nicht ran ohne dich direkt per DirektX dazwischenzuhängen.
HTH Frank
Unknown - Fr 06.06.08 15:52
Wie ihr oben sehen könnt, habe ich den code schon fertig, nur finde ich mit WinSpy nicht den Handle, bzw. den windowTitle
Clemens L. - Fr 06.06.08 15:57
Den Fenster-Titel kann man im Fenstermodus von DirectX-Spielen normal in der Titelleiste ausgelesen werden! :gruebel:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!