1 votos

Cómo encontrar la aplicación que controla la ventana de diálogo del sistema

Estoy intentando cambiar el navegador por defecto entre Chrome y Safari sin necesidad de que el usuario intervenga salvo para ejecutarlo inicialmente.

He encontrado esta utilidad que se encarga de la parte difícil:

Se puede instalar mediante Homebrew ejecutando:

brew defaultbrowser

Sin embargo al ejecutarlo aparece un cuadro de diálogo preguntando si quiero cambiar de navegador. Quiero pulsar el botón "Sí" utilizando AppleScript. A continuación se muestra una captura de pantalla.

screenshot that comes up when you call <code>default browser</code>

Quiero encontrar la aplicación que contiene esta ventana. ¿Existe una forma mejor de averiguar dónde está la ventana en lugar de recorrerlas todas?

He probado con la ventana foremost pero parece que devuelve el programa foremost. Aquí hay un programa que he probado:

tell application "System Events"
        tell process "SecurityAgent"
            click button 1 of window 1
        end tell
        delay 0.2
end tell

2voto

user3439894 Puntos 5883

Cuando se tiene un ventana que es un diálogo del sistema o alerta , tipo de ventana y no sabes cuál aplicación a la que pertenece, puede intentar utilizar código como las siguientes ejemplo AppleScript código para determinar el nombre de la aplicación al que pertenece:

tell application "System Events" to ¬
    get name of every application process ¬
        whose role description of window 1 is "system dialog"

O:

tell application "System Events" to ¬
    get name of every application process ¬
        whose accessibility description of window 1 is "alert"

Dicho esto, el proceso de solicitud quieres Eventos del sistema para interactuar es: CoreServicesUIAgent

Por ejemplo, si Google Chrome es mi navegador por defecto y corro, por ejemplo:

do shell script "/usr/local/bin/defaultbrowser 'safari'"

Entonces esto cuadro de diálogo aparece:

enter image description here

Para hacer clic en el Usar "Safari" botón usar:

tell application "System Events" to ¬
    click button "Use “Safari”" of ¬
        window 1 of application process "CoreServicesUIAgent"

Nota: También puede utilizar click button 1 en lugar de click button "Use “Safari”" .

Obviamente tendrás que ajustarte a tus necesidades/deseos particulares, pero ahora tienes la proceso de solicitud que Eventos del sistema necesita interactuar.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X