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

时间:2016-04-06 12:21:31

标签: objective-c macos accessibility-api

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

1 个答案:

答案 0 :(得分:0)

您可以通过CGWindowListCopyWindowInfo()获取OS X上所有窗口的列表,如果您知道目标窗口的详细信息,则可以监视该窗口的可见性并根据该窗口显示/隐藏应用程序窗口。要使用这些CGWindow*来电,您可能需要查看the Apple SonOfGrab example code

或者,如果您的用户为您的应用启用了辅助功能支持,那么您也可以在屏幕上can obtain information about other process windows

值得指出的是,这两种方法都有些脆弱,因为如果目标应用程序将来发生变化,那么当您尝试在屏幕上找到它时,您的应用可能无法正常运行。