3 votos

Applescript : Obtener la Lista de Id de Visible de windows ( windows que se muestra en el escritorio )

Estoy tratando de conseguir la lista de ventanas visibles, yo.e las ventanas que se muestran en el escritorio y no se minimiza.

Así que, ahora que tengo este script que me da la correst lista de procesos que están en ejecución y tiene un windows asociado con él. Pero yo no soy capaz de conseguir la identificación de las ventanas visibles asociados con estos procesos.

Aquí está la secuencia de comandos :

set visibleWindows to ""
set message to ""

tell application "System Events"
    set listOfProcesses to (name of every process where background only is false)
    repeat with visibleProcess in listOfProcesses
        try
            tell process visibleProcess to set visibleWindows to visibleWindows & (id of windows whose visible is true)
        on error someError
            set message to "Some error occured :" & someError
        end try
    end repeat
end tell

return {visibleWindows, listOfProcesses, message}

Usted puede probar esto en el editor de secuencias de comandos pero siempre dando una lista vacía.

Cualquier ayuda/sugerencias se agradece mucho.

3voto

user3439894 Puntos 5883

He modificado el código, haciendo los cambios necesarios para que en menos de ejecución (trabajo) a través del código para recopilar la información, mientras que la adición de algunos adicionales de código para manejar la presentación de más de un mensaje por tener un separador entre ellos. Sin embargo, usted puede cambiar a cualquier otra cosa y luego lo hice yo.

Dicho esto, la salida de la visibleWindows es sólo una cadena de números que representa la concatenación id's, que se escribirá en la salida. No estoy seguro de si ese es el resultado que se esperaba, sin embargo, si el código como lo escribió tenía que corrió a través de, el resultado habría sido el mismo por lo que se devuelve para visibleWindows.

on run
    set visibleWindows to ""
    set message to ""

    tell application "System Events"
        set listOfProcesses to (name of every process where background only is false)
    end tell

    repeat with visibleProcess in listOfProcesses
        try
            tell application visibleProcess to set visibleWindows to visibleWindows & (id of windows whose visible is true)
        on error someError
            set message to message & "Some error occurred: " & someError & "; "
        end try
    end repeat

    return {visibleWindows, listOfProcesses, message}
end run

En el código anterior, si cambio set visibleWindows to "" a set visibleWindows to {}, a continuación, visibleWindows devuelve como una lista de la id's no sólo una cadena de números.

Si usted también cambia:

tell application visibleProcess to set visibleWindows to visibleWindows & (id of windows whose visible is true)

A:

tell application visibleProcess to set visibleWindows to visibleWindows & visibleProcess & (id of windows whose visible is true)

Obtener el nombre de la aplicación seguido por una lista de la ventana de id, por lo que, al menos, los datos devueltos más sentido, a continuación, sólo una cadena de números o una lista de id's no saber que pertenece a lo que.

La línea de fondo es, obtener el listOfProcesses por separado y luego dejar que la aplicación no es el proceso de obtener la id y hacerlo fuera de el Sistema de "Eventos" tell bloque. Cada combinación que he probado dejando el resto de código en el Sistema de "Eventos" tell bloque fallado. Así que me mudé a los demás fuera de él y cambió tell process a tell application y funcionó. A continuación, he ajustado el código un poco.

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