Pregunta

Tengo una DLL que quiero reproducir sonidos usando sonido directo. Con el fin de reproducir sonidos, necesito el HWND del ejecutable. No tengo un HWND del ejecutable que se carga el archivo DLL. ¿Cómo consigo que en la DLL sin pasarlo desde el ejecutable?

¿Fue útil?

Solución

Se puede usar GetCurrentProcessId para obtener el ID del proceso actual.

A continuación, puede llamar EnumWindows, y comprobar cada ventana con GetWindowThreadProcessId encontrar una ventana asociada con el proceso.

Sin embargo, una opción más fácil podría ser simplemente generar su propia ventana. Puede crear una ventana de 1x1 píxeles que no es visible, y usarlo con sonido directo.

Esto tiene la ventaja de trabajar incluso si su proceso de llamada no tiene una ventana utilizable (o elimina identificadores de ventana regularmente).

Otros consejos

GetGUIThreadInfo en el hilo principal . Esto se consigue un montón de HWNDs. Si necesita un HWND de nivel superior, elegir cualquier válida (no todos los valores se pueden rellenar) y encontrar su ancestro nivel superior con GetAncestor(GA_ROOT).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top