Estoy escribiendo algún tipo de funcionalidad de IPC y necesito pasar ciertos recursos de un proceso a otro. Esto funciona bien para los identificadores Pipe, etc. que se pueden duplicar a través de DuplicateHandle. Ahora necesito pasar un HDC de un proceso al otro. ¿Esto es posible? Si es así: ¿cómo?Compartir HDC entre diferentes procesos
Sub-Pregunta: Estoy asumiendo que pasar identificadores de ventana (HWND) de un proceso a otro es seguro. ¿Es correcta esta suposición?
Creo que tanto usted como Nobugz tienen razón al enfatizar que mi problema puede ser visto como un intercambio de recursos de GDI en general. Encontré una publicación relacionada aquí: http://stackoverflow.com/questions/133948/sharing-gdi-handles-between-processes-in-windows-ce-6-0 Alguien quiere compartir HFONTs. Tal vez esta es la misma liga que HDCs. Pero si hay una tabla asignada a cada proceso, me gustaría que hubiese una simple función DuplicateGDIHandleFromThisTableForTheCurrentProcess ... –
El hecho de que la tabla exista en todos los procesos es un artefacto de la implementación actual de GDI, no una característica de diseño. Se puede ir. Y en muchos casos, los objetos GDI tienen punteros a las estructuras de datos del modo de usuario, de modo que, aunque el identificador es válido en todo el sistema, el objeto GDI real solo puede acceder con éxito en un solo proceso. –
Ok, entonces lo que definitivamente no funcionará es usar el mismo identificador sin coordinar más con el otro proceso. Esto deja a la cuestión de si existe una función a disposición del público para hacer esto ... –