c# c++ directx overlay

¿Superposición de DirectX en pantalla completa? Si.. otra vez c#



c++ overlay (2)

Hice esto en Delphi hace años. Las únicas opciones en ese momento eran inyectar una DLL nativa de Win32 en el proceso, el proceso llamaría a mis funciones de DirectDraw de DLL y el resto a la DirectDraw real. Esta era la única forma en que podía garantizar que funcionaría si el programa cambiaba la pantalla completa a / desde Windows. Mi DLL crearía un espacio de archivo compartido en memoria para comunicarse entre él y mi programa.

La razón por la que hice esto fue para escribir en el juego a las personas que hablan en TeamSpeak o Ventrilo.

Sin embargo, este método no es posible con los objetos de tiempo de ejecución de CLR. Su única opción es examinar C ++ Native DLL Injectrion / Wrapping.

Parece que esta pregunta se ha formulado varias veces en un contexto diferente y he logrado algunos avances en la creación de una superposición para un juego (Esto es para datos informativos, etc.). También me gustaría hacerla interactiva como Steam y XFire.

Me las arreglé para obtener una superposición para un juego de Directx mientras está en modo ventana ... un poco.

He mirado todo el desbordamiento de pila y google sin mucha suerte.

Si es necesario, puedo probar esto en C ++ en lugar de C #. Sé C # pero no me considero un profesional de ninguna manera. Solo necesito una mejor explicación. Heck, estaré dispuesto a armar un buen screencast / tutorial si puedo hacer que esto funcione correctamente.

NOTA: Realmente me gustaría hacer esto con un código nativo en lugar de una biblioteca, pero si hay una buena biblioteca gratuita por ahí, me gustaría echarle un vistazo.

Ejemplos: ¿Cómo superponer gráficos en juegos de Windows?

http://www.gamedev.net/community/forums/topic.asp?topic%5Fid=359794

C # "Bloquear" una forma de superposición a la posición de otra ventana

Más información: Me las arreglé para obtener un formulario de Windows para superponer una ventana de juego y establecer su padre con SetParent. Sin embargo, esto no funciona muy bien porque no funcionará en pantalla completa y la transparencia no funcionó. (Básicamente tenía una clave de transparencia y el valor TopMost se estableció en VERDADERO). Realmente me gustaría encontrar un método diferente.