Quiero configurar una ventana determinada, desde una aplicación externa (por ejemplo, textedit), para ser la parte frontal.Configuración de la ventana más frontal utilizando la API de accesibilidad
Puedo obtener con éxito una referencia a la aplicación usando GetFrontProcess, y comprobar si es frontal. Si no es así, puedo usar setFrontProcess para enfocarlo.
Puedo usar la API de accesibilidad para examinar todas las ventanas de esa aplicación. Estoy comprobando que existe una cierta ventana, y si es así lo comparo contra la parte delantera mayoría de la ventana de la aplicación:
//get the front window of textEditApp and store it in 'currentFrontWindow'
AXUIElementCopyAttributeValue(textEditApp, kAXFocusedWindowAttribute, (CFTypeRef *)¤tFrontWindow);
Si la ventana Me interesa no es más frontal, que necesito para configurarlo de modo. Pensé que podría usar AXUIElement Establecer AttributeValue para hacer esto, pero no estoy teniendo éxito. A continuación se muestra cómo he intentado hacerlo.
//set the front window of textEditApp to be desiredFrontWindow
AXUIElementSetAttributeValue(textEditApp, kAXFocusedUIElementAttribute, desiredFrontWindow);
He comprobado que la ventana existe, y la aplicación se 'cambió a' con éxito. ¿Pero por qué esta línea de código no lleva la ventana especificada al frente?
Gracias.
Gracias (una vez más) Pedro - esto funciona a las mil maravillas. En cuanto a la aplicación, he estado usando setFrontProcess en lugar de kAXFrontMostAttribute: ¿es esta una mala idea? Después de haber navegado a través de la aplicación y la ventana, hay un cierto AXUIElementRef que estoy interesado en llevar al frente (es decir, darle el foco del teclado). Puedo enterrar las capas de elementos para obtener una referencia, pero ¿cómo lo configuro? ¿Hay un equivalente de kAXMainAttribute para los elementos? Tal vez debería publicar (aún) otra Q. –