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

Applescript从第二个桌面获取应用程序,applescript,foreground,Applescript,Foreground,我正试图从我的第二个监视器(在Mavericks中,第二个桌面)获取前景应用程序。以下是我只获取前台应用程序的代码: tell application "System Events" set frontApp to name of first application process whose frontmost is true end tell 如何更改它,使其从特定的桌面/屏幕获取应用程序?我认为您不能随心所欲。如果您查看frontApp的属性,则没有任何属性可以指示它在哪个屏幕上。但是,

我正试图从我的第二个监视器(在Mavericks中,第二个桌面)获取前景应用程序。以下是我只获取前台应用程序的代码:

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

如何更改它,使其从特定的桌面/屏幕获取应用程序?

我认为您不能随心所欲。如果您查看frontApp的属性,则没有任何属性可以指示它在哪个屏幕上。但是,您可以做的是检查应用程序窗口的位置。如果您获得了进程窗口的属性,那么您将看到它有一个“位置”属性。您可以检查这些坐标以确定它在哪个屏幕上

例如,我有两个屏幕。我的笔记本电脑被设置为主屏幕。我知道主屏幕的屏幕分辨率是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
将mainScreenResX设置为1680
将mainScreenResY设置为1050
告诉应用程序“系统事件”
将firstFoundAppOnSecondScreen设置为缺少值
将visibleApps设置为visible为true的应用程序进程
在visibleApps中重复visibleApps
尝试
告诉visibleApp
将{x,y}设置为窗口1的位置
如果x>mainScreenResX或x<0或y>mainScreenResY或y<0,则
将firstFoundAppOnSecondScreen设置为name
退出重复
如果结束
结束语
结束尝试
结束重复
返回FirstFoundApponSecond屏幕
结束语

有没有办法获取鼠标所在的应用程序窗口的名称?结果是单击以使应用程序获得焦点,并使用您的脚本确保它尚未聚焦。谢谢。很高兴你找到了解决办法。祝你好运