我正在观察通知,以获取刚刚失去焦点的应用程序。我最后得到了一个NSRunningApplication实例,它是从通知对象的userInfo字典键NSWorkspaceApplicationKey中获得的。
我在想,我可以从通知中获得应用程序的主窗口,但我不确定从哪里开始,因为NSRunningApplication似乎相当有限。任何帮助都将不胜感激。
顺便说一句,我用的是MacRuby,但答案不一定是MacRuby。
谢谢
发布于 2009-12-31 02:09:16
传统上,苹果在这类事情上是相当严格的。NSRunningApplication本身是在10.6中引入的,正如您所说的,它有一点局限性。根据您想要做什么,答案可能在Accessibility framework中,也可能是CGWindow API。您可以使用NSRunningApplication中的processIdentifier将其与这些API相匹配。
发布于 2009-12-31 01:58:31
获取其他应用程序的主窗口非常困难;它们甚至不能保证是Cocoa!它们可以是Carbon或Java,或者Qt,或者Mono...所以你没有办法获得另一个应用的NSWindow,除非你做了黑客攻击。你可以尝试Accessibility API来获取其他应用程序的窗口信息等,独立于所使用的框架,但它并不容易使用。
发布于 2009-12-31 03:00:36
除非应用程序选择通过AppleScript支持或其他方式加入IAC,否则您根本不会接触它的窗口或您自己的堆空间之外的任何其他东西。
https://stackoverflow.com/questions/1981453
复制相似问题