制作另一个应用程序的窗口最前面和重点

问题描述:

我一直在试图从另一个应用程序获得任何给定的窗口成为最前面和最重点。制作另一个应用程序的窗口最前面和重点

这里有两种方法我都试过:

的AppleScript

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

为什么它不工作:虽然它似乎改变Z-顺序,它不改变重点!之前的最前面的窗口,即使被模糊处理,仍保持焦点。

CoreGraphicServices

CGSWindowOrder(cid, wid, kCGSOrderAbove, nil) 

为什么它不工作:没有被通用所有者,你不能改变另一个进程拥有一个窗口的顺序。在这种情况下,让自己成为通用所有者不是一种选择 - 我不想废除Dock。

重温

我需要一个窗口最前面,并从一个进程集中到另一个。 AppleScript无法集中注意力,因为我没有拥有该窗口,所以CGS不是一个选项。

任何解决方案/想法?

+0

您是否找到可以在今天工作的解决方案?未启用辅助功能? – Noitidart 2015-08-10 04:13:17

尝试使用Accessibility API将AXPress动作发送到AXWindow。显然,用户需要访问辅助设备。

+0

使用CGSWindow handle/id有没有什么方法可以创建AXWindow? – Edward 2010-09-14 08:34:24

+0

爱德华:不。获得AXWindow的唯一方法是在AXApplication窗口中按标题查找窗口。这也意味着如果两个窗口具有相同的标题,那么就搞砸了。 – 2010-09-14 16:46:04

+0

这个AX的东西不再围绕我认为,这些日子有没有任何非可访问性的方法? :)感谢彼得! – Noitidart 2015-08-10 03:52:48