Me gustaría saber si es posible identificar qué proceso es responsable de crear / administrar una ventana en Mac OS X.
Por ejemplo, cuando se inician varias instancias de una aplicación, ¿cómo puedo obtener el ID de proceso (PID) correspondiente a una ventana específica? O si hay una ventana de diálogo modal sin título, ¿cómo puedo obtener el PID de su propietario?
Sé que en Windows es posible usar la herramienta Sysinternals Suite que proporciona una forma de buscar una biblioteca que se ejecuta con algunos datos.
Estoy buscando un mecanismo similar al que aparece en este blog .
En este caso, usando Sysinternals Suite (y Process Explorer), encontraron qué DLL / programa estaba usando la cámara web buscando una DLL o una subcadena (en este caso, usando el nombre físico del dispositivo).
Entonces, ¿hay algún mecanismo o programa, o tienes alguna idea sobre cómo buscar algo similar para Mac OS X? ¿Cómo puedo identificar qué proceso ha lanzado una ventana?
Respuestas:
He usado el script Python . No es infalible, pero funciona bastante bien para mí.
No volveré a publicar el script completo sin permiso, pero aquí hay un resumen: utiliza
CGWindowListCopyWindowInfo
, que se importaQuartz
, para recopilar información de la ventana del sistema, luego le pide al usuario que mueva la ventana deseada, luego recopila la información de la ventana nuevamente y muestra información para los que cambiaron. La información volcada incluye la ID del proceso, comokCGWindowOwnerPID
.Aquí está el código:
El script imprime información para la ventana que cambió de posición dentro de un intervalo de 5 segundos. Entonces la salida se ve así:
fuente
Hice una herramienta llamada
lswin
Entonces puedes usar grep para encontrar el pid de tu ventana.
Aquí está el código fuente del script:
fuente
@kenorb Combiné tus 2 versiones del script, básicamente funciona como la primera, mostrando diferencias pero el formato es la segunda. Además, si la ventana no está en la pantalla, no se está imprimiendo, de lo contrario, genera demasiada basura
fuente
pip install pyobjc-framework-Quartz