从Apple Script获取两个具有相同名称的实例的当前应用程序


1

当运行同一个应用程序的两个实例时,AppleScript如何处理活动应用程序的活动窗口?

下面的脚本解决了其他应用程序。可能是因为应用程序的名称和ID是相同的,它只按名称从列表中选择第一个。

tell application (path to frontmost application as text) to tell front window...

我使用该脚本来最大化当前窗口,但它不适用于同一个应用程序的两个实例:

tell application "Finder" to set {0, 0, dtw, dth} to bounds of window of desktop
try
    tell application (path to frontmost application as text) to tell front window
        set bounds to {0, 0, dtw, dth}
    end tell
on error
    tell application "System Events" to tell (process 1 where it is frontmost)
        try
            click (button 1 of window 1 where subrole is "AXZoomButton")
        end try
    end tell
end try

什么应用程序运行两次?为什么不以不同方式命名每个应如果您有更多细节/约束,我们可能会提供除解析进程列表以选择首先启动或最后启动的应用程序之外的其他内容...
bmike

这是一个Chrome实例,作为访问Google音乐的独立应用创建,如下所述: apple.stackexchange.com/questions/226833/...
myneur

酷 - 我已经插入了我见过的其他人在需要网络应用程序来获得不同的底座名称等时使用的工具。它的 fluidapp.com
bmike

Answers:


2

获取最前端应用程序的正确实例是不可能的,因为这两个实例具有相同的路径和相同的包标识符,应用程序将始终是第一个打开的实例。

你必须使用 最前面 process, 像这样:

tell application "System Events"
    tell (first process whose frontmost is true) to tell front window to if exists then
        set position to {0, 0}
        set size to {dtw, dth}
    end if
end tell

大。它似乎工作除了一个细节:前一个脚本最大化窗口到全屏幕,包括隐藏的码头上未使用的区域。具有位置/大小的新脚本在屏幕侧面保持填充,其中隐藏了扩展坞。此脚本似乎不接受{0,0,dtw,dth}的设置边界。任何想法如何改善它使用真正的全屏尺寸没有填充?
myneur

我没有这种行为 iMac电脑 埃尔卡皮坦 ),停靠在侧面或底部,所以我不知道如何解决它。
jackjr300

如果你有一个隐藏的码头,它上面有5px的间隙。它适用于所有OS X版本。如果你没有看到它,你可能只有一个黑暗的背景。如果显示底座,则不存在间隙。这不是一个主要的问题,但通过这个间隙看到狂野的背景或下面的窗户可能正在窥视它,这很难看,这很难看。
myneur

是的,我的背景是黑暗的,我用黄色背景测试,我看到了差距。所以,除了发布之外,我没有解决这个问题的方法 全屏,放了 --start-fullscreen 选项结束时 exec SH脚本中的命令
jackjr300
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.