AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Einen Text immer ausgeben egal was läuft (game, software)
Thema durchsuchen
Ansicht
Themen-Optionen

Einen Text immer ausgeben egal was läuft (game, software)

Ein Thema von CTV · begonnen am 25. Okt 2004 · letzter Beitrag vom 25. Okt 2004
Antwort Antwort
Benutzerbild von CTV
CTV

Registriert seit: 20. Jan 2004
Ort: Zug CH
83 Beiträge
 
Delphi 7 Professional
 
#1

Einen Text immer ausgeben egal was läuft (game, software)

  Alt 25. Okt 2004, 17:08
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
Wer glaub er ist, hört auf zu werden!
Delphi Rulez!!!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Einen Text immer ausgeben egal was läuft (game, software

  Alt 25. Okt 2004, 17:20
wie wäre es mit einer systemmodalen Messagebox? Ist eventuell einfachher.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von c113plpbr
c113plpbr

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

Re: Einen Text immer ausgeben egal was läuft (game, software

  Alt 25. Okt 2004, 17:29
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 ?).

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 http://www.madshi.net/. Schau dir dort die Beispiele an, und lerne daraus

@luckie: dann hauts ihn aber ausm spiel raus

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

Registriert seit: 20. Jan 2004
Ort: Zug CH
83 Beiträge
 
Delphi 7 Professional
 
#4

Re: Einen Text immer ausgeben egal was läuft (game, software

  Alt 25. Okt 2004, 17:31
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
Wer glaub er ist, hört auf zu werden!
Delphi Rulez!!!
  Mit Zitat antworten Zitat
Benutzerbild von CTV
CTV

Registriert seit: 20. Jan 2004
Ort: Zug CH
83 Beiträge
 
Delphi 7 Professional
 
#5

Re: Einen Text immer ausgeben egal was läuft (game, software

  Alt 25. Okt 2004, 17:41
@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
Wer glaub er ist, hört auf zu werden!
Delphi Rulez!!!
  Mit Zitat antworten Zitat
Benutzerbild von Darty
Darty

Registriert seit: 8. Jun 2002
Ort: Kronau
731 Beiträge
 
#6

Re: Einen Text immer ausgeben egal was läuft (game, software

  Alt 25. Okt 2004, 17:48
Habe mich jetzt nicht damit näher befasst, aber die Richtung könnte stimmen KLICK
Matthias Knebel
Mfg M. Knebel [-Darty-]
- Gehörlose Delphianer gibt es selten -
www.team-knebel.de
  Mit Zitat antworten Zitat
Benutzerbild von CTV
CTV

Registriert seit: 20. Jan 2004
Ort: Zug CH
83 Beiträge
 
Delphi 7 Professional
 
#7

Re: Einen Text immer ausgeben egal was läuft (game, software

  Alt 25. Okt 2004, 17:59
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
Wer glaub er ist, hört auf zu werden!
Delphi Rulez!!!
  Mit Zitat antworten Zitat
Benutzerbild von Darty
Darty

Registriert seit: 8. Jun 2002
Ort: Kronau
731 Beiträge
 
#8

Re: Einen Text immer ausgeben egal was läuft (game, software

  Alt 25. Okt 2004, 18:01
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 ..
Matthias Knebel
Mfg M. Knebel [-Darty-]
- Gehörlose Delphianer gibt es selten -
www.team-knebel.de
  Mit Zitat antworten Zitat
Benutzerbild von CTV
CTV

Registriert seit: 20. Jan 2004
Ort: Zug CH
83 Beiträge
 
Delphi 7 Professional
 
#9

Re: Einen Text immer ausgeben egal was läuft (game, software

  Alt 25. Okt 2004, 19:21
also ich habs nu raus wie ich den text ausgeben kann

Code:
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;
Im Moment kann man die Textfarbe und die den Texthintergrund einstellen plus den text Selber dazu dienen diese variablen:

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
Wer glaub er ist, hört auf zu werden!
Delphi Rulez!!!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz