Applescript从第二个桌面获取应用程序

时间:2013-10-26 14:00:48

标签: applescript foreground

我正试图从我的第二台显示器(In Mavericks,第二台桌面)获取前台应用程序。这是我的代码,只获取前台应用程序:

tell application "System Events"
set frontApp to name of first application process whose frontmost is true
end tell

如何更改它以便从特定桌面/屏幕获取应用程序?

1 个答案:

答案 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