Как я могу использовать AppleScript, чтобы получить список всех моих окон, даже если они находятся в другом месте? - PullRequest
0 голосов
/ 28 августа 2018

Я начал с кода здесь , немного изменив его в соответствии со своими потребностями:

set appList to {} --list of all open applications
set winList to {} --list of all open windows

tell application "System Events"
    repeat with theProcess in (processes whose visible is true)
        tell theProcess
            set processName to name
            set theWindows to (name of windows) as text
        end tell
        set allWins to allWins + (count of theWindows)
        set appList to appList&processName
        set winList to winList&theWindows
    end repeat
end tell

В качестве примера: допустим, у меня папка «Документы» открыта в Finder в своем собственном пространстве, мой текущий скрипт открыт в редакторе скриптов, а StackOverflow открыт в Safari в режиме разделенного просмотра, а почта свернута. Этот скрипт должен возвращать appList = {"Finder","Safari","Script Editor","Mail"} в некоторой перестановке и winList = {"Documents","StackOverflow","MyScript","All Inboxes"} в некоторой перестановке.

Вот моя проблема. На практике, когда я нажимаю «выполнить», очевидно, я открыт для разделения, так как там находится мой редактор сценариев. Так что я на самом деле получаю appList = {"Finder","Safari","Script Editor","Mail"}, winList = {,"Stack Overflow","MyScript","All Inboxes"} - другими словами, пока скрипт обрабатывает этот Finder, он не обнаруживает открытых окон, потому что он находится в другом пространстве. С другой стороны, окно «Почта» свернуто, поэтому оно поднимается в Dock.

Сначала я предположил, что это происходит из-за надоедливой строки whose visible is true - но окна Finder не видны, поскольку они находятся на другом экране.

Итак, я взял эту строку. В то время как appList накапливалось со случайными закулисными приложениями, как и следовало ожидать, winList остался прежним (за исключением нескольких лишних пробелов) - там все еще нет окон Finder.

Есть ли способ получить все мои окна всех моих приложений, даже если они находятся в другом месте?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...