将应用程序设置为最前面的applescript

时间:2017-05-17 06:47:39

标签: applescript

我试图找出最前面的应用程序x是什么,运行一个脚本,然后使用applescript将x设置为最前面的应用程序。

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

[code here]

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

虽然此代码不会返回任何错误,但它不起作用。我也试过这段代码

tell application "System Events"
set apptemp to application "Google Chrome"
set frontmost of process "Google Chrome" to true
end tell

但同样,虽然没有错误,但它不起作用。

另外,有人请告诉管理员,以便更容易显示代码。我最难在本网站上显示代码。我必须为每行代码缩进四个空格,这是疯狂的。

2 个答案:

答案 0 :(得分:2)

处理此问题的一种有效方法是使用path to frontmost application,如下所示:

# Save which application is frontmost (active),
# as an absolute, HFS-style path string pointing to the application bundle.
set frontmostAppPath to (path to frontmost application) as text

# Activate and work with another application.
activate application "Reminders"
delay 2

# Make the previously frontmost (active) application frontmost again.
activate application frontmostAppPath

使用应用程序的特定路径可确保重新激活相同的应用程序,而不管重复项和进程名称不同的应用程序。

注意:想要直接保存和恢复对象引用frontmost application 很诱人,但这实际上并不起作用:莫名其妙地,这样一个保存的引用被视为与当前应用程序(运行代码的应用程序)。

答案 1 :(得分:2)

比其他两种方法都更好的方法是使用捆绑标识符,这是一个唯一的密钥。

tell application "System Events"
    set frontAppID to bundle identifier of first process whose frontmost is true
end tell

-- Sample code... can be anything else
activate application "Finder"
delay 3
-- End of sample code

activate application id frontAppID