Seite 1 von 3
Auf fremden Screen zeichnen?
Verfasst: 04.08.2008 17:24
von Programie
Hi,
Ich habe von dem Spiel "GTA San Andreas" die Speicheradresse, wo der "IDirect3DDevice9"-Pointer steht. Und das ist ja das, was bei PB die Funktion StartDrawing() (oder OpenScreen()?) zurück gibt, oder?
Wie kann man nun mit API da reinschreiben, sodass es im Spiel angezeigt wird?
Thx schonmal im Vorraus!

Verfasst: 04.08.2008 17:26
von Kaeru Gaman
kauf dir mal ein neues Game...
... und "Voraus" schreibt man immer noch mit nur einem "r"
Verfasst: 04.08.2008 17:29
von Programie
Kaeru Gaman hat geschrieben:kauf dir mal ein neues Game...
Wieso?
Ich finde es cool!
Kaeru Gaman hat geschrieben:... und "Voraus" schreibt man immer noch mit nur einem "r"
Egal

Verfasst: 04.08.2008 17:33
von Andreas_S
SuFu
Es kann extrem aufwendig sein auf fremde Screens zu zeichnen...
Verfasst: 04.08.2008 17:54
von Programie
Andreas_S hat geschrieben:SuFu
Es kann extrem aufwendig sein auf fremde Screens zu zeichnen...
Ich muss ja erstmal nur wissen, wie man mit WinAPI auf den Screen zeichnet. Den Pointer hab ich ja schon.
Verfasst: 04.08.2008 18:40
von Thorium
Programie hat geschrieben:Andreas_S hat geschrieben:SuFu
Es kann extrem aufwendig sein auf fremde Screens zu zeichnen...
Ich muss ja erstmal nur wissen, wie man mit WinAPI auf den Screen zeichnet. Den Pointer hab ich ja schon.
Garnicht. Das ist DirectX, da wird nicht mit WinAPI drauf gezeichnet. Da wird mit DirectX drauf gezeichnet. Um zugriff auf die DirectX Session des Spiels zu bekommen, muss dein Code im Prozess des Spiels laufen, Stichwort: DLL-Injection. Den Pointer zum D3D9 Interface hast du ja. Alles weitere kannst du dem DirectX9 SDK entnehmen. Die PB Befehle wirst du zum zeichnen nicht verwenden können.
Verfasst: 04.08.2008 18:59
von Andreas_S
Wenn man die DLL nicht in das Programm bringt, dann muss man einen Hook im DX anbrigen, oder?
Verfasst: 04.08.2008 19:01
von Programie
Andreas_S hat geschrieben:Wenn man die DLL nicht in das Programm bringt, dann muss man einen Hook im DX anbrigen, oder?
Denke mal schon.
Aber das macht man doch so, oder?
Verfasst: 04.08.2008 20:03
von Andreas_S
Du willst einen DX Hook machen?
Na dann hf, es hält dich keiner davon ab... Bis auf dich selbst...
Verfasst: 04.08.2008 20:03
von Thorium
Andreas_S hat geschrieben:Wenn man die DLL nicht in das Programm bringt, dann muss man einen Hook im DX anbrigen, oder?
Du bringst die DLL in das Programm damit du einen Hook installieren kannst. Der Hook ist nur dafür da den geeigneten Zeitpunkt abzupassen um was auf den Screen zu zeichnen. Dafür eignet sich bei DirectDraw z.b. die Flip-Prozedur. Die hooken und wenn die Prozedur ausgeführt wird, kannst du deinen Kram auf den Screen zeichnen per DirectDraw, wozu du Zugriff auf das DD-Interface benötigst. Dann die originale Flip-Prozedur aufrufen.
Ich kenne ein gutes Tutorial, das sich mit der Problematik in Direct3D beschäftigt. Leider gibts die Seite nicht mehr wo das Tutorial zu finden war.