В случае нескольких экранов, есть ли способ узнать, на каком экране отображается документ приложения?
Например, в Photoshop я могу получить положение окон документа с помощью:
tell application "System Events" to tell application process "Adobe Photoshop CS6"
---------- document's window list
set docsWinList to {}
copy (the windows whose name ≠ "") to docsWinList
set docsWinCount to (count of docsWinList)
if (docsWinCount < 1) then return -- no opened documents
---------- position of the first document's window
tell item 1 of docsWinList
set hvCoords to position -- list with 2 items : h and v coords
end tell
end tell
Но эти координаты абсолютные для всех экранов (и могут быть отрицательными).
С другой стороны, я могу знать все экраныразрешение с помощью скрипта, найденного здесь:
on getScreensResolution()
set screensSizes to {}
repeat with p in paragraphs of (do shell script "system_profiler SPDisplaysDataType | awk '/Resolution:/{ printf \"%s %s\\n\", $2, $4 }'")
set screensSizes to screensSizes & {{word 1 of p as number, word 2 of p as number}}
end repeat
# `screensSizes` now contains a list of size lists;
# e.g., with 2 displays, something like {{2560, 1440}, {1920, 1200}}
return screensSizes
end getScreensResolution
Поскольку ранее найденные координаты окна могут быть отрицательными, в зависимости от того, отображается ли окно на втором экране, и этот экран физически расположен слева от основного экрана (определяется ОС), я хотел бы знать разрешение экрана этого окна документа.
Я не уверен, что это возможно, или, может быть, это требует много вычислений.