使另一个应用程序的窗口最前面和专注

时间:2010-09-14 04:34:26

标签: macos applescript core-graphics

我一直试图让其他应用程序的任何给定窗口成为最前沿和专注的。

以下是我尝试的两种方法:

的AppleScript

tell application "Safari"
   set index of window "Downloads" to 1
   activate
end tell

为什么它不起作用:虽然它似乎改变了z-Order,但它并没有改变焦点!即使混淆了,前一个最前面的窗口仍然保持焦点。

CoreGraphicServices

CGSWindowOrder(cid, wid, kCGSOrderAbove, nil)

为什么它不起作用:如果不是通用所有者,则无法更改其他进程拥有的窗口的顺序。在这种情况下,让自己成为通用所有者不是一个选择 - 我不想废弃Dock。

小结

我需要将窗口放在最前面并从一个过程集中到另一个过程。 AppleScript无法关注,因为我没有窗口,所以CGS不是一个选项。

任何解决方案/想法?

1 个答案:

答案 0 :(得分:1)

尝试使用辅助功能API将AXPress操作发送到AXWindow。显然,用户需要访问辅助设备才能打开。