从CGWindowListCopyWindowInfo获取NSWindow *

时间:2015-08-08 04:55:41

标签: objective-c macos core-graphics core-foundation

我已经完成了使用CGWindowListCopyWindowInfo列出所有窗口(按照从前到后的顺序,我认为/希望)但是我遇到问题从NSWindow*获取它所以我可以使用{ {1}}等等。

似乎我甚至没有从中获得orderFront:

这是我的代码,它是js-ctypes。

CGWindowID

PS:即使我使用的是排除桌面元素标志,我仍然可以获得像光标和底座这样的桌面元素,如果回答者可以解释如何修复它也会很棒!

1 个答案:

答案 0 :(得分:6)

用于获取窗口ID的密钥是kCGWindowNumber

从窗口编号you could use [NSApp windowWithWindowNumber:windowNumber]获取NSWindow。

不幸的是,这只适用于您的应用拥有的Windows,而不适用于其他应用程序窗口。

此外,如果您真的想在获得其他应用程序窗口的窗口ID后使用NSWindow,那么这是一个错误的假设:not all CGWindows are NSWindows。除了上述调用之外,Apple还没有提供从CGWindow到NSWindow的方法。要使用其他应用程序的窗口(如果其他应用程序是合作的),您将不得不坚持使用CGWindow对象。