Einzelnen Beitrag anzeigen

Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#11

Re: OSD / Fenster über ein anderen (FullScreen)Programm lege

  Alt 10. Jun 2005, 20:00
Zitat von Totti:
Oder müsste man sich da direkt in die Grafik des Spiels hacken?
Ob "Hacken" der richtige ausdruck dafür ist, ist fraglich, aber wenn du das ganze nicht im Windowed-Mode laufen lassen willst, dann bleibt dir da warscheinlich keine andere möglichkeit.

Wenn's dir nix ausmacht, wenns flimmert, könntest du probieren mit GDI-Calls in bestimmten Zeitintervallen immer wieder auf das Spiel-Fenster zu zeichnen (Es flimmert, weil du nicht synchron mit dem Spiel zeichnest). Allerdings ist das dann sehr unleserlich, und es sieht gesundheitsschädlich aus

Die alternative dazu wäre, DirectX-Methoden oder OpenGL-Methoden zum Zeichnen zu verwenden (kommt draufan was das Spiel verwendet). Dazu sollte man sich aber einigermaßen mit der entsprechenden Graphik-Library auskennen.
Das ist aber noch nicht alles, denn der warscheinlich schwierigste Teil ist, die Ausgabe zu "synchronisieren". Dazu muss man wissen, wann das Spiel ein neues Bild zeichnet, und kurz vorher auf den entsprechenden Backbuffer zeichnen.
Warscheinlich kommt noch ne menge IPC dazu, da du warscheinlich ein "externes" Programm hast, und so mit einem Modul im Spiel kommunizieren musst.

Nungut, ich hab mir in letzer Zeit eine Library geschrieben, welche dieses Problem für DirectX 8 "löst", diese ist allerdings relativ kompliziert, und ich hab eigentlich nicht vor, deren Code zu veröffentlichen. Sie ist allerdings so geschrieben, dass ich sie ohne weiteres, mit "halben" quellcode weitergeben könnte (da is dann nur soviel dabei, dass man es "benutzen" kann).
Eine weitere DirectX-Version zu implementieren (Dx9) wäre kein allzu großes Problem, allerdings hätte ich mit OpenGL kleine Probleme, da ich davon sogut wie keine ahnung hab ...
Diese Library kann allerdings bisher lediglich Text an einer beliebigen Stelle, in beliebiger Farbe, Größe und Schriftart ausgeben.
Als Anwendungs-Beispiel könnte ich z.B. Wc3Banlist nennen, denn dieses Programm verwendet diese DLL bereits.
Theroretisch könnte ich dir auch ne Version davon erstellen, jedoch hab ich in letzter Zeit relativ viel um die Ohren ...

ciao, Philipp
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat