如何在Mac上访问我的应用程序的Windows层次结构?

时间:2010-06-21 18:08:37

标签: cocoa macos

我指的是属于我的应用程序(进程)的所有窗口。我需要得到类似(NSWindow *)的所有内容。请注意,某些窗口是由第三方插件创建的,[NSApp windows]无法访问。是的,我知道,Quartz Window Services可以通过PID返回所有窗口。但是我怎么能通过CGWindowID获得NSWindow呢?谢谢!

2 个答案:

答案 0 :(得分:3)

尝试NSWindowList获取窗口编号,然后-[NSApplication windowWithWindowNumber:]获取NSWindows。

答案 1 :(得分:2)

通常NSWindowList()会给出窗口ID。还有Quartz Window Services可以提供帮助。

  • 要获得NSWindow*(Cocoa)[NSApp windowWithWindowNumber: (NSInteger)windowID]方法。
  • 要获得WindowRef(碳)HIWindowFromCGWindowID()功能。

如果上述两种方法都不起作用,则表示该窗口是使用CoreGraphics Private API创建的。由于逆向工程,其定义is available

关于Mac上的X11窗口,它们是使用Xplugin库(Xquartz)创建的,该库是封闭源代码,也使用CoreGraphics Private API。