Puede intentar my example on hooking the Direct3D 9 API using C#. Esto utiliza EasyHook, un ensamblaje .NET de fuente abierta que le permite instalar ganchos desde el código administrado en funciones no administradas.
SlimDX también se utiliza; se trata de un contenedor administrado de código abierto alrededor de las bibliotecas Direct3D.
La parte engañosa del enganche es determinar las direcciones de las funciones virtuales de un objeto COM. Esto se hace en el ejemplo anterior utilizando una pequeña DLL auxiliar de C++ que encuentra las direcciones de la VTable. [Actualización: hay un comentario publicado que muestra cómo obtener los punteros a la función de la VTable en C# también - dado un IntPtr al objeto com]
El ejemplo engancha el método EndScene de un IDirect3DDevice9, que también es donde querría dibujar cualquier superposición. En cuanto a mostrar un formulario en la superposición, no estoy tan seguro de que sea tan fácil, quiero decir que puedes renderizar la imagen con bastante facilidad, pero tendrás que capturar las entradas y responder/pasar manualmente los eventos a la forma en pregunta apropiadamente. ¡Buena suerte!
¿Alguien? Si alguien ha visto la superposición de Steam o xFire, lo quiero así. Los usuarios pueden navegar por la red mientras juegan juegos, etc. –