我打开了2个“Finder”窗口A& B,A在前面而B在下面,下面的片段将B带到最顶端的前面:
tell application "Finder"
activate
activate window 2
end tell
但对于不支持脚本编写的应用程序,刚才提到的代码无济于事。
有关激活非脚本应用程序窗口的任何想法。
答案 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 在其应用程序包中。
例如,macOS 包含的 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 代码中包含了错误处理,如果您愿意,可以将其删除.