如何在Mac上获取另一个应用程序窗口创建和删除事件



我正在尝试构建一个应用程序,该应用程序在创建或关闭另一个第三方应用程序的特定窗口时创建并关闭其窗口。任何关于如何实现这一点的指针或示例代码都将非常有帮助。在窗口上,我在SetWinEventHook的帮助下实现了同样的事情,注册了事件AccessibleEvents.Create和AccessibleEvents.Delete,然后在事件处理程序中检查该窗口类名。

您可以通过CGWindowListCopyWindowInfo()获取OS X上所有窗口的列表,如果您知道目标窗口的详细信息,您可以监控该窗口的可见性,并在此基础上显示/隐藏应用程序的窗口。要处理这些CGWindow*调用,您可能需要查看Apple SonOfGrab示例代码。

或者,如果您的用户为您的应用程序启用辅助功能支持,您也可以在屏幕上获取有关其他进程窗口的信息。

值得指出的是,这两种方法都有点脆弱,因为如果目标应用程序在未来发生变化,你的应用程序在试图在屏幕上找到它时可能会表现不正常。

最新更新