0

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

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

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

4

1 回答 1

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
于 2013-10-26T19:06:58.587 回答