Macos 制作另一个应用程序';s窗口位于最前面,焦点集中

Macos 制作另一个应用程序';s窗口位于最前面,焦点集中,macos,applescript,core-graphics,Macos,Applescript,Core Graphics,我一直在尝试从另一个应用程序中获取任何给定的窗口,使其成为最前端和最关注的窗口 以下是我尝试过的两种方法: AppleScript tell application "Safari" set index of window "Downloads" to 1 activate end tell 为什么不起作用:虽然它似乎改变了z顺序,但它并没有改变焦点!前一个最前面的窗口,即使模糊,仍保持焦点 CoreGraphicsServices CGSWindowOrder(cid, wid,

我一直在尝试从另一个应用程序中获取任何给定的窗口,使其成为最前端和最关注的窗口

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

AppleScript

tell application "Safari"
   set index of window "Downloads" to 1
   activate
end tell
为什么不起作用:虽然它似乎改变了z顺序,但它并没有改变焦点!前一个最前面的窗口,即使模糊,仍保持焦点

CoreGraphicsServices

CGSWindowOrder(cid, wid, kCGSOrderAbove, nil)
不起作用的原因:如果不是通用所有者,您就不能更改另一进程所拥有的窗口的顺序。在这种情况下,让自己成为通用船主不是一个选择——我不想废黜码头

重述

我需要在最前面设置一个窗口,集中精力从一个流程切换到另一个流程。AppleScript无法聚焦,而且CGS不是选项,因为我不拥有该窗口


有任何解决方案/想法吗?

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

是否有任何简单的方法可以使用CGSWindow句柄/id创建AXWindow?爱德华:没有。获取AXWindow的唯一方法是在AXApplication的窗口中按标题查找窗口。这也意味着,如果两个窗口具有相同的标题,那么您就完蛋了。@Noitidart:Accessibility API仍然存在@Noitidart:私有接口更有可能从你下面消失,而不是更少。这里并没有一个好的解决方案,除了提交一个bug,要求改进可访问性许可系统的可用性(最好是具体描述用户遇到的困难):@Noitidart:您应该为这些问题提交bug报告。以下是关于支持事件的信息、它们的用途以及如何使用它们:(错误报告和TSI不是相互排斥的;提交错误报告以提醒苹果注意问题是有效的,然后使用TSI尝试自己解除阻止。)您找到了今天可以使用的解决方案吗?没有启用辅助功能?