gpt4 book ai didi

Cocoa Accessibility API,我可以单击后台窗口而不激活它吗?

转载 作者:行者123 更新时间:2023-12-03 16:39:33 24 4
gpt4 key购买 nike

我一直在寻找解决这个问题的方法,所以我想我应该寻找比我更伟大的人的智慧。我正在开发一个 Cocoa 应用程序,它使用 Accessibility API 来操作另一个程序(它是一个热键应用程序)。我控制的应用程序通常会打开多个窗口,其中一些窗口隐藏在其他窗口后面。如果可能的话,我想做的是使用 Accessibility API 将鼠标事件发送到窗口,方式是按下窗口中的按钮而不将其带到前台(与窗口交互但不激活它) 。我尝试这样做的原因是,将鼠标事件发送到另一个窗口将迫使它到前台并中断用户与最前面的窗口的交互。

这在 Windows 上是可能的 - 显然,因为与我的类似的应用程序在那里执行此操作 - 但我感觉这对于 Cocoa 来说是不可能的,考虑到窗口管理器的工作方式。我是不是搞错了?

最佳答案

可访问性比这更高。例如,您将 AXPress 操作发送到 AXButton 对象,但“按”不一定是单击 - 例如,在 View 聚焦时按空格键是亦作“按”。 AXPress 是一个高级操作,意味着“做你的事情”,这显然对某些 View (例如按钮)有意义,而对其他 View (例如字段)则没有意义。

当您从其预期目的(为残疾用户提供辅助设备)来看应用程序时,激活应用程序的辅助功能确实有意义。如果用户以任何方式“按下”某些东西,他们可能打算激活该应用程序并在其中工作。

Quartz Event Services将使您几乎到达:您可以create an event tap for the process you want to control ,您可以伪造事件和 send them to a tap 。问题是you can only send events to a tap when the tap fires —即,当应用程序已经有一个事件需要处理时。如果没有,你就会陷入困境。

关于Cocoa Accessibility API,我可以单击后台窗口而不激活它吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2747931/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com