如何在OS X 10.8中使用Applescript将窗口置于最前面而不将其聚焦


9

我想将一个窗口(例如QuickTime)放在最前面,而不将其聚焦。我可以使用Applescript中的以下代码在OS X 10.7中进行操作。

tell application "System Events"
    set visible of process "QuickTime Player" to true
end tell

这是等效的Python。

from ScriptingBridge import *
process = SBApplication.applicationWithBundleIdentifier_('com.apple.systemevents').processes().objectWithName_('QuickTime Player')
process.setVisible_(True)

但是在我升级到OS X 10.8后,它不起作用。有什么办法可以使其工作?

Answers:


12

如果一个应用程序具有打开的窗口,则应将其从其他应用程序的窗口上方移开,但应将其保持在当前应用程序的窗口下方。

tell application "System Events"
    perform action "AXRaise" of window 1 of process "QuickTime Player"
end tell

这就是我想要的。谢谢。顺便说一句,在哪里可以找到操作的文档?
曾宇晓

1
可访问性角色和属性参考:操作。您可以查看UI元素支持actions of或通过Accessibility Inspector 支持的操作。
Lri 2012年

1
除非您将调用应用程序(执行AppleScript的应用程序)添加到“安全和隐私”的“隐私”选项卡的“可访问性”部分,否则OS X 10.10(Yosemite)和10.11(El-Capitan)中不允许使用AXRaise。 “系统偏好设置”面板。这意味着您将首次尝试进行操作-系统将为您提供系统UI,建议您进入首选项。由于用户体验的绕行,我无法使用它。还有另一种不用使用AX(可访问性API)来提高窗口大小的方法吗?
Motti Shneor

-1

因此,根据我从您的帖子中收集的信息,您正在尝试使用Applescript将应用程序引入视图吗?如果是这样,Mountain Lion中的代码实际上相当简单!这里是:

tell application "Quicktime Player"
activate
end tell

我希望这行得通!如果不是您想要的,请告诉我,我会为您更新。:)


2
好吧,激活将专注于Quicktime,所以这不是我想要的。我的意思是,如果您打开Applescript应用程序,键入您的代码并运行它,则窗口焦点将移至Quicktime。如此一来,您不能键入任何代码,例如在单击Applescript窗口之前。
曾宇晓
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.