cocoa osx carbon

cocoa ios



Obtener una ID única para una ventana de otra aplicación (1)

Soy un desarrollador novato de Cocoa y estoy desarrollando mi primera aplicación. Quiero leer un identificador único desde cualquier ventana de cualquier aplicación, ya sea Cocoa o Carbon. Las aplicaciones Cocoa hacen que sus identificadores de ventana estén disponibles para AppleScript (aunque estoy seguro de que hay una forma mucho mejor de hacerlo a través de una ruta adecuada de Objective C), pero estoy tratando de acceder a identificadores de ventana desde documentos en las aplicaciones de Adobe. Esto parece ser mucho más complicado. Todo lo que puedo encontrar en las bibliotecas de referencia es HIWindowGetCGWindowID :

"Esta función devuelve la identificación de la ventana asignada por el servidor de la ventana cuando se crea una ventana. La ID de la ventana generalmente no es útil con ninguna otra función de carbono, pero puede usarse con otras funciones de Mac OS X que requieren una identificación de ventana, como funciones en OpenGL ".

¿Se puede usar esto para obtener la ID de mi programa? ¿O es solo una función que se puede usar dentro de una aplicación?

Si alguien pudiera señalarme en la dirección correcta, estaría eternamente agradecido.


La función HIWindowGetCGWindowID () solo puede devolver un CGWindowID para una de las ventanas de su aplicación, ya que un WindowRef de otro programa no será válido en el suyo.

La función CGWindowListCopyWindowInfo () de CGWindow.h devolverá una matriz de diccionarios, uno para cada ventana que coincida con los criterios establecidos, incluidos los de otras aplicaciones. Solo le permite filtrar por ventanas sobre una ventana determinada, ventanas debajo de una ventana determinada y ventanas ''en pantalla'', pero el diccionario devuelto incluye un ID de proceso para la aplicación propietaria que puede usar para hacer coincidir la ventana con la aplicación. En cada diccionario devuelto, la clave kCGWindowNumber apuntará a la ID de la ventana como CFNumber. También hay una función CGWindowListCreate () que solo devuelve una matriz de CGWIDID. Básicamente no hay documentación para estas funciones más allá del encabezado CGWindow.h y el código de muestra ''Son of Grab'' . Además, solo es 10.5.