Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Delphi: Uhr in DirectX anwendungen (https://www.delphipraxis.net/91149-delphi-uhr-directx-anwendungen.html)

gekkorist 30. Apr 2007 13:23


Delphi: Uhr in DirectX anwendungen
 
Hallo, in DirectX und Delphi bin ich nen totaler anfänger... Ich würde mal Fragen wie man das Realisieren kann, in einer DirectX anwendung (nen Spiel) eine Uhr anzeigen zu lassen?

Ich weiß nicht wo ich da anfangen soll. Ich weiss auch nicht ob man dafür unbedingt DX braucht... auf den Desktop kann ich ja schreiben... das habe ich jetz scho mal hinbekommen wie ich mir das vorstelle.. aber wenn ich nen Spiel starte wird das Überlappt, hat evtl so etwas scho mal einer gemacht?

Prototypjack 30. Apr 2007 14:00

Re: Delphi: Uhr in DirectX anwendungen
 
Guten Tag!

Zuerst mal eine Frage: Ist die Anwendung, das Spiel, in dem du die Uhr anzeigen möchtest deine eigene?

Wenn ja: Dann einfach die Uhr selbst zeichnen. Wenn du ein Spiel schreibst, welches sich ja selbst auch zeichnen muss, sollte diese Uhr zusätzlich keine große Hürde darstellen.

Wenn die Anwendung allerdings nicht deine eigene ist und du die Uhr in ein fremdes Fenster hineinzeichnen musst, so dürfte das unterfangen extrem schwierig werden. Entweder du versucht die Uhr Topmost zu setzen, sodass sie auch über dem Spiel läuft (Ob das überhaupt möglich ist, weiss ich nicht, doch bezweifle es stark). Oder du holst dir das Handle des Fensters (Ich rate hier mal rum) und zeichnest dort deine Uhr bei jedem Refresh neu rein. Wenn (Und das weiss ich auch nicht) das möglich ist, übersteigt es vermutlich deine Fähigkeiten als Anfänger (Was du ja selbst von dir behauptest) extrem.

Gruß,
Max

dizzy 30. Apr 2007 15:27

Re: Delphi: Uhr in DirectX anwendungen
 
Zitat:

Zitat von Prototypjack
Entweder du versucht die Uhr Topmost zu setzen, sodass sie auch über dem Spiel läuft (Ob das überhaupt möglich ist, weiss ich nicht, doch bezweifle es stark).

Funktioniert (zumindest im Fullscreenmodus) nicht. Bei Windowed bin ich mir unsicher, aber es dürfte auch da einfach vom DirectX-Overlay übernagelt werden, solang man nicht manuell einstellt, dass man auf dieses verzichtet. (Was den Sinn von DirectX in Teilen in Frage stellen würde ;))

Zitat:

Zitat von Prototypjack
Oder du holst dir das Handle des Fensters (Ich rate hier mal rum) und zeichnest dort deine Uhr bei jedem Refresh neu rein.

Das Handle nicht, aber der Devicecontext geht. Dann kann man auch zeichnen, jedoch hat man ein Problem: Man bekommt den Refresh (=Bufferflip) nicht mitgeteilt, so dass man auf gut Glück in kurzen Intervallen immer neuzeichnen muss. Da DX aber idR in einem anderen Rythmus neuzeichnet, wird das ganze eine sehr flimmerige Angelegeheit. Fazit: Geht, aber macht Augenschmerzen :mrgreen:


Programme wie Fraps oder TeamSpeak Overlay, die Daten in Overlays anzeigen, nutzen in der Regel die Technik des DLL-Hookings, bei der man die original DirectX-DLLs durch eigene ersetzt, die alle Aufrufe durchreichen ans Original, und im Flip dann eigenen Code zufügen können vorher bzw. nachher. Leider hab ich bis dato keine genauere Beschreibung des Verfahrens finden können, und schon garnicht eine Anleitung/Tutorial. Sämtliche Autoren dieser Programme halten dieses Wissen geheim, da die Produkte entweder bereits kommerziell sind, oder man sich die Option offen halten will dies zu machen, und dann will man sein Know-How natürlich nicht im Vorfeld ausgeplaudert haben.
Ich versuche nun schon seit langer Zeit immer mal wieder genauere Infos dazu zu finden, da ich auch immer wieder tolle Ideen habe, diese Technik zu nutzen. Ein Administrationstool für Teamspeak, dass sich komplett aus dem Spiel per Hotkeys bedienen lässt, und eben Statusmeldungen im Spiel darstellt wäre z.B. etwas, was mir vorschwebt. Aber ich find nix, und meine Kenntnisse sind, obwohl schon nicht mehr Anfänger, leider nicht ausreichend, um in brauchbarer Zeit von selber voll dahinter zu steigen :?

gekkorist 30. Apr 2007 16:52

Re: Delphi: Uhr in DirectX anwendungen
 
Ne, mein eigenes ist es nicht.. es handelt sich um Counterstrike bzw Counterstrike Source. Wenn ich mal spiele geht die Zeit ganz schön schnell rum.
Hier habe ich nen link von nen Coder forum die das erklären wie das in c geht, aber da verstehe ich erst recht nur Bahnhof KlickmE
Naja die seite is aber für Cheater.. die probs mit ihren Hacks haben, aber evtl nützt das ja was.

DGL-luke 30. Apr 2007 17:02

Re: Delphi: Uhr in DirectX anwendungen
 
hallo, der code sieht aus als würde er auch nur stur zeichnen. das ist eindeutig zu wenig code um mehr zu sagen.

Khabarakh 30. Apr 2007 17:04

Re: Delphi: Uhr in DirectX anwendungen
 
Das Beispiel basiert wohl auf einer Hook-API aus dem gleichen Forum (die sich - möglicherweise mit ein wenig Umbau - auch mit Delphi nutzen lassen sollte). Muss ich auch irgendwann einmal ausprobieren ;) , in Verknüpfung mit managed DirectX scheint das ein reines Kinderspiel zu werden.

Dani 30. Apr 2007 17:06

Re: Delphi: Uhr in DirectX anwendungen
 
Hi.

Was, wenn deine Uhr (zurecht) als Cheat erkannt wird?

gekkorist 30. Apr 2007 17:28

Re: Delphi: Uhr in DirectX anwendungen
 
Zitat:

Zitat von Dani
Hi.

Was, wenn deine Uhr (zurecht) als Cheat erkannt wird?

mann koennte ja vorher bevor man es testet in Szeamforum schreiben.. ma gucken was die dazu sagen.. oder irgendwo verbreiten und gucken was passiert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:52 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