Было много попыток получить размеры монитора путем чтения системных списков файлов. Смотри http://macscripter.net/viewtopic.php?id=15425
Если у вас есть доступ к терминам AppleScript studio (ASS), вы можете вызывать методы в NSScreen, чтобы получить все мониторы, а затем запрашивать их размеры. Самый простой способ использовать термины ASS в простом AppleScript - это скомпилировать пустое приложение ASS в Xcode. В этом примере я создал простое приложение ASS с именем ASSAccess, которое дает мне доступ к терминам ASS:
tell application "ASSAccess"
-- The first item in this list will be your main monitor
set screensArray to call method "screens" of class "NSScreen"
set Displays to {}
if {} is not screensArray then
repeat with displayNo from 1 to (count screensArray)
-- call visibleFrame instead to take into account the Dock and menubar
set dims to call method "frame" of (item displayNo of screensArray)
copy dims to end of Displays
end repeat
end if
end tell
Теперь проблема, с которой я сталкиваюсь в этих измерениях, - это система координат. Метод рамки NSScreen дает вам прямоугольник с началом координат в левом нижнем углу основного монитора. Затем любые вторичные экраны даны относительно этого источника. Если вы пытаетесь определить, находится ли окно в этих границах, позиция окна задается в системе координат с началом координат в верхнем левом углу. Это целый беспорядок конверсии, который я еще не выяснил.