Intentando asociar hwnd con el documento de Office en Microsoft Office
Frecuentes
Visto 93 equipos
2
Tengo un complemento de Office muy intensivo.
Además de los puntos estándar de ampliabilidad de Office, estoy conectando muchas API de Win32, como kernel32! CreateFileW, ole32! StgCreateStorageEx, etc. (estoy usando el enlace IAT).
Sin embargo, un problema que no he podido resolver (aunque de alguna manera no funciona) es obtener un puntero a una interfaz de documento de hwnd.
Sin embargo, he notado que Office (en todos los programas, en todas las versiones) coloca un puntero, probablemente a un objeto interno, en el almacenamiento de Windows en GWL_USERDATA.
¿Cómo sé que esto es un puntero a objeto? Debido a que su primer DWORD es un puntero a lo que parece una tabla v (un montón de direcciones, todas comienzan con 'push ebp, move ebp, esp'). Además, los primeros 3 métodos de esta tabla v parecen tener una lógica IUnknown (el primer método llama a MsoHrSimpleQueryInterface2, el segundo método hace un 'inc' y devuelve el valor incrementado, y el tercer método parece hacer la lógica de lanzamiento habitual).
Y, sin embargo, no puedo hacer más progresos. Estoy probando varias llamadas de QueryInterface a este objeto, y estoy tratando de leer los otros métodos, sin mucha suerte.
Me pregunto si alguien alguna vez marchó por este camino con mejor resultado.
0 Respuestas
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas plugins ms-office reverse-engineering windbg or haz tu propia pregunta.
si tiene un hwnd, como en un identificador de una ventana, no solo un identificador genérico de Windows, el identificador existe dentro de la colección de Windows dentro del objeto Aplicación, intente convertir el hwnd en una (Ventana) y compararlo con las otras ventanas dentro la colección de Windows. Una vez que encuentre la ventana correcta, debería poder inferir desde allí. - Ryan