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.