Kann mir jemand sagen, wie Haken/overlay ein DirectX-Spiel in C#?
Habe ich versucht, immer eine fullscreen-C# - Fenster zu überlappen, ein Spiel, jedoch wird es nicht.
Nach der Untersuchung ein wenig, fand ich heraus, dass ich brauchen, um Haken das Spiel und dann zeigt die C# - Fenster.
Kann mir jemand erklären, wie ich dies tun?
Ich wäre in der Lage, um die Anzeige einer C# - form über eine DirectX-Spiel?
InformationsquelleAutor der Frage Joey Morani | 2010-04-15
(disclosure: ich arbeite für dieses Unternehmen)
Können Sie versuchen, unsere Deviare APIes hat Funktionen, um hook von COM-Objekten in C#.
Es ist ein Satz von COM-Objekten, die verwendet werden können von einer beliebigen Programmiersprache (unterstützt COM). Ein Artikel mit source code zeigt, wie Sie Videos und fügen Sie ein overlay zur Verfügung: Instrumentierung Direct3D-Anwendungen, video-capture-und FPS berechnen
COM-Spy-Konsole und Direct Sound Capture sind zwei Beispiele, die eine Konsole zu Haken, COM-Objekte wie DirectX.
Hoffe, es hilft.
InformationsquelleAutor der Antwort sw.
Können Sie versuchen,mein Beispiel Einhaken der Direct3D-9-API mit C#. Dieser nutzt EasyHook ein open-source -.NET-assembly, die es Ihnen ermöglicht zu installieren Haken von managed code in unmanaged Funktionen.
SlimDX ist auch - dies ist ein open-source-managed wrapper um die Direct3D-Bibliotheken.
Der schwierige Teil der Haken ist die Festlegung der Adressen der COM-Objekte virtuelle Funktionen. Dies geschieht im obigen Beispiel mit Hilfe eines kleinen C++ helper DLL, findet die Adressen von der VTable. [Update: es ist ein Kommentar gepostet, dass zeigt, wie man die Funktion Zeiger aus der VTable in C# auch - gegeben, IntPtr, um das com-Objekt]
Beispiel Haken die EndScene-Methode der IDirect3DDevice9, das ist auch, wo Sie möchten, um zu zeichnen, overlays. Als Anzeige einer form in die overlay-bin ich mir nicht so sicher, das wird so einfach sein - ich meine Sie machen kann das Bild leicht genug, aber Sie haben zu erfassen, Eingaben und manuell reagieren/pass-thru die Ereignisse in der form in Frage angemessen. Viel Glück!
InformationsquelleAutor der Antwort Justin Stenning
Da Sie keine direkte DirectX-Zugriff aus C# kann dies schwierig sein.
Aus meinem begrenzten Verständnis des Konzepts:
DirectX Hooks bestehen aus Anhängen an einen DirectX Kontext und manipulieren, dies kann/darf nicht erfordern Herumspielen mit einem anderen Programm Speicher, etwas, das am besten geeignet, um C/C++
Ich kann falsch sein, obwohl, aber das ist ein Thema für fortgeschrittene und mein Bauchgefühl sagt mir, Sie haben möglicherweise Probleme unter .NET
InformationsquelleAutor der Antwort Aren