![]() |
Einen Text immer ausgeben egal was läuft (game, software)
Hallo Leute
Ich möchte einen Text in ein Game ausgeben welches auf OpenGl läuft. Das Ziehl ist wenn ich am zocken bin, dass dann wenn irgend was passiert (E-Mail, Chat message etc) dass dann in dem Game wo ich gerade spiele diese Message erscheint. Kann man überhaupt in fremde Apps die auf OpenGL basis laufen etwas rein zeichnen, schreiben ? Ich hab schon versucht einfach über das Handle vom game einen Canvas zu zeichnen mit einem Timer mit schnellem interval der dann jedes mal den textout macht aber das zeigt es nicht an. Kann man die Canves ausgaben auch irgendwie auf StayonTop stellen ? dann würden die das auf OpenGl Basierende game überzeichnen. oder muss ich da doch direckt in das game rein zeichnen ? Ist es möglich eine Textausgabe zu machen, welche auf jedenfall immer auf dem Bildschirm gezeichnet wird ? egal was man gestartet hat (game, software, etc) wenn ich sowas hätte dann würde es mir die Ereigniss meldungen welche ich dann noch definiere immer anzeigen wenn jemand eine idee hat wie ich das machen kann währ cool Danke für eure Hilfe greetz Cyrus |
Re: Einen Text immer ausgeben egal was läuft (game, software
wie wäre es mit einer systemmodalen Messagebox? Ist eventuell einfachher.
|
Re: Einen Text immer ausgeben egal was läuft (game, software
Hi CTV!
gehen tut das ... sicher, nur in spielen wirds schwer ... außerdem musst du unterscheiden: Zwischen normalen Windowsprogrammen, zwischen DirectX und OpenGL-Anwendungen. Für normale Fenster reicht warscheinlich die TextOut-Methode, die auch in Spielen funktioniert, wenn die intervalle kurz genug sind, allerdings flimmert der Text dann meist stark (sehr unschön ;) ). Um in DirectX oder OpenGL text auszugeben, sollte man zu "hauseigenen" mitteln greifen. Allerdings wird für die Textausgabe unter DX zum erstellen der schrift eigentlich immer zwingend ein IDirect3DDevice benötigt, und unter OGL das HDC (unter ogl ist es eh schon schwer überhaupt text auf die screen zu kriegen, auch im eigenen spiel ... oder kommt mir das nur so vor :gruebel: ?). Nun, somit ist es meist das größte problem, einen Pointer zum IDirect3DDevice bzw. HDC zu bekommen, und das ist es mit dem du dich auseinandersetzen musst. Das ganze herauszufinden, ist möglich mit API-Hooking. Wenn du das wirklich machen willst, solltest du dich damit etwas intensiver beschäftigen. Ein guter Einstieg ist eine Hook-Library, wie z.B. MadCodeHook von ![]() @luckie: dann hauts ihn aber ausm spiel raus :mrgreen: ciao, Philipp |
Re: Einen Text immer ausgeben egal was läuft (game, software
du meinst so einen wie es der MSN macht ?
hab ich mir auch schon gedacht, nur das problem ist das wenn der dialog kommt (der von MSN) dann beinträchtig das das game welches somit unspielbar wird. Das problem hab ich bereits von der box von msn darum hab ich die auch ausgeschaltet. Von dem her kann ichs ned so machen greetz Cyrus |
Re: Einen Text immer ausgeben egal was läuft (game, software
@c113plpbr
Ich lasse generell alle spiele über opengl laufen von dem her müsst ich in dem Falle nur immer das HDC ermitteln denk ich ma und evtl währs einfacher wenn ich statt einen text ein bild (welches den text enthält) ausgebe. Dann fällt das Problem weg mit der Ausgabe von dem Text. So müsste ich im prinzip nur ein bild über opengl ausgeben auf das den Pointer vom HDC welches das game verwendet seh ich das richtig ? thx für deine hilfe greetz CTV |
Re: Einen Text immer ausgeben egal was läuft (game, software
Habe mich jetzt nicht damit näher befasst, aber die Richtung könnte stimmen
![]() |
Re: Einen Text immer ausgeben egal was läuft (game, software
cool :)
Danke so könnte es klappen statt dass ich den Punkt ausgebe gebe ich dann text aus mit textout oder ein bild:) und den thread starte ich nur für ne gewisse zeit 5-10 sek dann hab ich mein tool mal gucken ob das dann stark flackert wenn ich mir den code anschaue wird das wohl stark flackern Danke für die Hilfe greetz Cyrus |
Re: Einen Text immer ausgeben egal was läuft (game, software
Da ich sowas in der Richtung mal probieren wollte aber keine Zeit hatte bisher, wäre es auch schön falls Du Ergebnisse hast dieses auch zu berichten :) Thx schon mal ..
|
Re: Einen Text immer ausgeben egal was läuft (game, software
also ich habs nu raus wie ich den text ausgeben kann
Code:
Im Moment kann man die Textfarbe und die den Texthintergrund einstellen plus den text Selber dazu dienen diese variablen:
public
Smsg:string; FontColor,FontBackColor, MsgX,MsgY:integer; bLoop: Boolean; dwID: DWord; ThreadHandle: THandle; .... function PaintThread(Param: PBoolean): Integer; var iWidth, iHeight: Integer; Pos: TPoint; DC: HDC; hOldBrush: hBrush; Count,i: Integer; ansic:Pansichar; begin with form1 do begin for i:=1 to (length(Smsg)) do begin ansic[i-1]:=Smsg[i]; end; Result := 0; Count := 0; while Param^ do begin Inc(Count); iWidth := GetSystemMetrics(SM_CXSCREEN); iHeight := GetSystemMetrics(SM_CYSCREEN); Pos := Point(iWidth div 2 - 4, iHeight div 2 - 4); DC := GetWindowDC(GetDesktopWindow); hOldBrush := SelectObject(DC, CreateSolidBrush(RGB(250, 250, 0))); settextcolor(dc,fontcolor); SetBkColor(dc,FontBackcolor); textout(dc,MsgX,MsgY,ansic,length(Smsg)); DeleteObject(SelectObject(DC, hOldBrush)); ReleaseDC(GetDesktopWindow, DC); Sleep(0); if Count shr 4 = 0 then Sleep(1); end; end; end; Fontcolor, FontBackColor, Smsg, MsgX, MsgY Ich bin im Moment noch am raus finden wie ich den FontName und die FontSize übergeben kann. Wie ich vermutet habe flackert der Text sehr wird man wohl nicht vermeiden können Greetz Cyrus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz