Доступ ко второму, третьему, ... ящику окна через AppleScript - PullRequest
0 голосов
/ 31 июля 2011

Я хочу измерить размер и положение окна, включая его ящики.Я уже выяснил, как получить размер / положение первого ящика , но я не могу найти способ (ни Google, ни пытаться) получить доступ к другим ящикам.Вы можете получить доступ к первому ящику, выполнив что-то вроде следующего:

tell application "System Events"
  set appProcess to the first process whose name is "DrawerTest"
  set appWindow to the first window of appProcess
  if (count drawers of appWindow) > 0 then
    set {{w, h}} to size of drawer of appWindow
    set {{x, y}} to position of drawer of appWindow
    set drawerBounds to {x, y, x + w, y + h}
  end if
end tell

drawerBounds

Если я напишу first drawer или drawer 1, я получу ошибку Execution Error: Can’t get item 1 of 116. (последнее число меняется) и Error -1728. (кажется,иногда меняются, даже -1719).Если я не могу написать first или 1, я не могу написать second или 2 (выдает ту же ошибку).Тем не менее, я уверен, что есть способ, так как я могу получить доступ к первому ящику.Любые идеи?

PS: Для целей тестирования я создал простое приложение, которое содержит только окно с 4 кнопками для запуска выдвижного ящика по краю. Я отправил его на github , поэтому вы можете клонировать его и поиграть самостоятельно, если хотите.

1 Ответ

1 голос
/ 01 августа 2011

Поскольку существует несколько свойств для ящика, когда вы получаете размер ящика, вы получаете список указанных свойств ящиков (например, {{465, 117}} для одного ящика).Вы можете получить индивидуальный размер, получив элемент этого списка (например, первый размер, который также является списком, будет {465, 117}), но вы также можете просто просмотреть текущие ящики, какими бы они ни были.

repeat with aDrawer in (drawers of appWindow)
    set {w, h} to size of aDrawer
    set {x, y} to position of aDrawer
    -- add to overall window size if larger, etc
end repeat
...