AppleScript - >激活不可编写脚本的应用程序的窗口

时间:2010-09-07 03:15:00

标签: applescript

我打开了2个“Finder”窗口A& B,A在前面而B在下面,下面的片段将B带到最顶端的前面:

tell application "Finder"
    activate
    activate window 2
end tell

但对于不支持脚本编写的应用程序,刚才提到的代码无济于事。

有关激活非脚本应用程序窗口的任何想法。

2 个答案:

答案 0 :(得分:5)

在这些情况下,您通常可以转向系统事件。系统事件了解正在运行的进程的窗口,您通常可以操作这些窗口。这样的事情会告诉你一些你可以做的事情。只需使用代码,看看你是否可以做你想做的事。

tell application "System Events"
    tell process "Whatever"
        properties of windows
    end tell
end tell

编辑:窗口的一个属性是“标题”。所以你可以使用它。这种方法使用的事实是许多应用程序都有一个“窗口”菜单,并且在该菜单下多次列出了窗口的名称,您可以通过单击approprite菜单项来切换窗口。所以像这样的东西可能有用...我的例子使用TextEdit。

tell application "TextEdit" to activate
tell application "System Events"
    tell process "TextEdit"
        set windowTitle to title of window 2
        click menu item windowTitle of menu 1 of menu bar item "Window" of menu bar 1
    end tell
end tell

答案 1 :(得分:0)

您对非脚本化的定义是什么?几乎所有东西在某种程度上都是可编写脚本的,但为了举例,让我们使用,不包含 AppleScript 字典,例如AppName.sdef 在其应用程序包中。

例如,ma​​cOS 包含的 Stickies 应用程序 不包含 Stickies.sdef 文件,当尝试将其添加到 脚本编辑器中的时,显示“无法添加该项目,因为它不可编写脚本。”

在这种情况下,需要系统事件应用程序进程对话,例如:

示例 AppleScript 代码

if running of application "Stickies" then
    tell application "System Events"
        tell application process "Stickies"
            set frontmost to true
            if exists window 2 then ¬
                perform action "AXRaise" of window 2
        end tell
    end tell
end if

注意事项:

我在示例 AppleScript 代码中包含了错误处理,如果您愿意,可以将其删除.