De un par de pruebas preliminares parece que EnumWindows
siempre devuelve ventanas en orden de instanciación inversa, es decir, la ventana instanciada más reciente primero. ¿Es eso una observación válida? Si es así, ¿es cierto en todas las versiones de Windows? ¿Y es esto una suposición confiable, es decir, ese comportamiento está documentado en alguna parte?¿Es significativo el orden en que las manijas son devueltas por EnumWindows?
Contexto: estoy tratando con una situación en la que estoy provocando una aplicación de terceros para abrir varias ventanas no modales y yo tenga que enviar algunos mensajes de ventana para las ventanas una vez que están abiertas, sin embargo, no tengo una forma segura de identificarlos, ya que ni sus clases de ventana ni sus leyendas diferirán y tampoco sé sus coordenadas esperadas. Sin embargo, si pudiera confiar en el comportamiento anterior de EnumWindows
podría simplemente usar el primer identificador devuelto por EnumWindows
cuya clase y título coinciden con mis expectativas. Eso aún deja algunos agujeros de bucle hipotéticos, pero creo que será lo suficientemente bueno. Sin embargo, sugerencias alternativas son bienvenidas.
Eso suena razonable. ¿Tiene un enlace a la documentación de este comportamiento en alguna parte? Hubiera esperado esto en los documentos 'EnumWindows' ... –
Tenga en cuenta que escribí" el primer identificador devuelto por EnumWindows * cuya clase y título coinciden con mis expectativas * ". Soy consciente de que otras ventanas que coinciden con los mismos criterios podrían abrirse mientras tanto, pero en este caso tengo un 95% de confianza en que esto es bastante hipotético. –
el problema con mantener una lista de identificadores conocidos es que (hasta ahora) no tengo forma de saber cuándo se cierra una ventana para eliminarla de la lista nuevamente. esto podría volver a ser hipotético, pero ¿cómo sabría que el identificador (potencialmente liberado) no ha sido reasignado a una nueva ventana mientras tanto? –