如果有多个屏幕,是否有办法知道应用程序文档显示在哪个屏幕上?
例如,在Photoshop中,我可以使用以下方法检索文档窗口的位置:
computed: {
dialogDataProp: {
get: function() {
return this.dialog;
},
set: function() {}
}
}
但是这些坐标在所有屏幕上都是绝对(可以是负数)。
另一方面,我可以通过以下脚本了解所有屏幕的分辨率:
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
由于先前找到的窗口坐标可能为负,这取决于该窗口是否显示在第二个屏幕上,并且此屏幕实际上位于主屏幕(由OS定义)的左侧,所以我想知道分辨率该文档窗口的屏幕。
我不确定是否可行,或者可能涉及很多计算。
答案 0 :(得分:0)
(除了您的想法,我想指出,即使您仅使用一个屏幕,窗口也可能具有负位置值:只需将任何窗口移到屏幕左边界之外……)
如果只有两个屏幕,您的问题很容易回答。
从您的第一个脚本开始,只需添加此行……
if (item 1 of (size of window 1 as list)) * -1 > (item 1 of hvCoords)) then display dialog "Your window is located on a screen left of your active one."
–“如果…则”决定“窗口1”的负x值是否大于其实际宽度
–“显示对话框”是您计划添加的任何代码的占位符/反馈……
例如:如果大小为750x400px的窗口返回x值为-1,122,则上述行将计算
750* -1 > -1,122 => -750 > -1,122 => true => window located on left-screen.
此代码假定窗口将完全显示在您的左侧屏幕上。 。
如果一旦“一半大小”的窗口已经被转移,则修改上面的代码:
(item 1 of (size of window 1 as list)) *
-1/2
=====
(仅当您使用两个以上的屏幕时,才需要第二个脚本的值。)