Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Screenshot mit DirectX (https://www.delphipraxis.net/22278-screenshot-mit-directx.html)

kurtm1 15. Mai 2004 12:21


Screenshot mit DirectX
 
Da die normalen Delphi Prozeduren relativ langsam für Screenshots sind, wollte ich mal probieren einen Screeníe mit Directx machen

Habe dabei diese Links gefunden:

http://www.gamedev.net/reference/art...rticle1844.asp
http://msdn.microsoft.com/library/de...screenshot.asp
//EDIT: Hier das genaze für VB: http://www.mvps.org/vbdx/articles/screenshot/

Weiß jemand wie das in Delphi funktionieren könnte?

c113plpbr 15. Mai 2004 13:10

Re: Screenshot mit DirectX
 
Ja, mit sehr komplexen API-Hooks. Bin gerade dabei etwas derartiges zu schreiben (fast fertig ^^) ...

ciao, Philipp

c113plpbr 16. Mai 2004 15:54

Re: Screenshot mit DirectX
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hab das jetzt mal schnell zusammengeschrieben ... ich hoffe es geht, habs nicht allzusehr getestet (bisher nur unter xp sp2).
Sollte für dx8.1 und dx9 funktionieren. Mit F12 kannst du screenshots machen, die dann im ordner der !3d-anwendung! gespeichert werden. Der pfad wird angezeigt.

Bei dx9 hab ich kleine 'beendigungsprobleme', d.h. es kann passieren, dass ne menge fehlermeldungen beim beenden der 3d-anwendung kommen. Vorheriges 'de-injezieren' (wie sagt man das im deutschen???) kann dabei abhilfe schaffen.

Anbei liegt ein DLL-Injektionsprogramm mit der zu injezierenden DLL (injector.exe und hookd3d.dll) und noch ein paar directx dlls, die du/ihr evtl. noch ins windows\system32 verzeichnis kopieren müsst (keine dlls überschreiben!)

Den Quellcode muss ich noch wesentlich verbessern, aber man kann sehen, ein ansatz ist da ... ;-)
(ob ich den quellcode früher oder später rausrücke muss ich mir erst noch überlegen, da ich schon ein halbes jahr daran arbeite ...)

ciao, Philipp

vlees91 25. Jan 2009 12:46

Re: Screenshot mit DirectX
 
erstmal vorab: Ich habe mir dieses Beispiel noch nicht angesehen aber wenn ich das richtig lese wird eine DLL in die DirectX Anwendung injected?
Dummerweise gibts allerdings viele Spiele die jegliche modifikation (also auch injectede DLL's) als Cheat erkennen und dann gibt's nen Permban.
Hat jemand Erfahrung hiermit, ob das hier trotzdem klappt (ohne dass hier irgendein Programm namens Punkbuster oder VAC nachher meint: ah du cheater, raus hier)?

habs jetzt erstmal runtergeladen... ist ja nur eine .exe und .dll Datei... kein sourcecode?!
und bitte nicht heulen dass ich hier in einen 5 Jahre alten Thread poste.

c113plpbr 26. Jan 2009 22:58

Re: Screenshot mit DirectX
 
Zitat:

Zitat von vlees91
erstmal vorab: Ich habe mir dieses Beispiel noch nicht angesehen aber wenn ich das richtig lese wird eine DLL in die DirectX Anwendung injected?

Genau so ist es. Die Anwendung wird dazu „gezwungen" meine DLL zu laden und den darin enthaltenen Code auszuführen. Dieser modifiziert Speicherstellen der DX-DLL so, dass bestimmte Funktionen umgeleitet werden (gehookt), und somit an bestimmten Stellen durch Funktionen meiner DLL „erweitert" werden.
Zitat:

Zitat von vlees91
Dummerweise gibts allerdings viele Spiele die jegliche modifikation (also auch injectede DLL's) als Cheat erkennen und dann gibt's nen Permban.
Hat jemand Erfahrung hiermit, ob das hier trotzdem klappt (ohne dass hier irgendein Programm namens Punkbuster oder VAC nachher meint: ah du cheater, raus hier)?

Ich will für nichts garantieren, aber eigentlich tun meine DLL's nicht mehr als Fraps oder XFire, d.h. eigentlich wird sowas schon geduldet.
Zitat:

Zitat von vlees91
habs jetzt erstmal runtergeladen... ist ja nur eine .exe und .dll Datei... kein sourcecode?!
und bitte nicht heulen dass ich hier in einen 5 Jahre alten Thread poste.

Ich hab den Code zu exakt diesen Beispiel grad ned da, aber das Beispiel ist mithilfe von madCodeHook geschrieben. Bei dieser Bibliothek ist ein DX-Hook als Beispiel dabei. Einfach mal runterladen und anguggen.

mfg, Philipp


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