我正试图从我的第二台显示器(In Mavericks,第二台桌面)获取前台应用程序。这是我的代码,只获取前台应用程序:
tell application "System Events"
set frontApp to name of first application process whose frontmost is true
end tell
如何更改它以便从特定桌面/屏幕获取应用程序?
答案 0 :(得分:0)
我认为你不能按你的意愿去做。如果查看frontApp的属性,则没有任何属性可以指示它所在的屏幕。但是,您可以检查应用程序窗口的位置。如果获得进程窗口的属性,则会看到它具有“位置”属性。您可以检查这些坐标以确定它所在的屏幕。
例如,我有2个屏幕。我的笔记本电脑设置为主屏幕。我知道主屏幕的屏幕分辨率是1680x1050。因此,如果我检查一个窗口并且它的位置在那些坐标之外,那么我知道它必须在第二个监视器上。我就是这样做的。
注意:我可以告诉哪些应用程序在第二台显示器上有窗口,但第二台显示器上的哪个应用程序不在最前面...就像你问的那样。你必须为此想出其他的东西。我告诉你这个想法,也许你可以为你的情况做好准备。
这里我只在第二台显示器上获得第一个带窗口的应用程序。这应该会向您展示这个想法,您可以根据需要调整代码。
set mainScreenResX to 1680
set mainScreenResY to 1050
tell application "System Events"
set firstFoundAppOnSecondScreen to missing value
set visibleApps to application processes whose visible is true
repeat with visibleApp in visibleApps
try
tell visibleApp
set {x, y} to position of window 1
if x > mainScreenResX or x < 0 or y > mainScreenResY or y < 0 then
set firstFoundAppOnSecondScreen to name
exit repeat
end if
end tell
end try
end repeat
return firstFoundAppOnSecondScreen
end tell