【发布时间】:2009-12-31 16:44:36
【问题描述】:
全部,
如何在我的 CA 应用程序中使用来自其他应用程序的 (NS) 视图作为层。 IE。我想在我的 CA 应用中将 Keynote 演示文稿显示为图层。
我发现 iChatTheatre API 看起来很有希望 - 但是我需要相反的。从应用程序获取内容的 API - 不提供它。
任何指针?
谢谢。
【问题讨论】:
标签: cocoa core-animation
全部,
如何在我的 CA 应用程序中使用来自其他应用程序的 (NS) 视图作为层。 IE。我想在我的 CA 应用中将 Keynote 演示文稿显示为图层。
我发现 iChatTheatre API 看起来很有希望 - 但是我需要相反的。从应用程序获取内容的 API - 不提供它。
任何指针?
谢谢。
【问题讨论】:
标签: cocoa core-animation
查看"Son of Grab" 示例。
它向您展示了如何使用随 Mac OS X 10.5 引入的 CGWindow*() API
API 允许您获取整个窗口的内容,因此您必须找到一种方法来获取您感兴趣的窗口部分。
【讨论】:
我不相信有一种公开的方式来做你所说的事情。您最好的方法可能是对 iChat AV 系统(接收方)进行逆向工程,看看是否可以复制它。 ICP project 已经完成了一些初步工作。这很粗略,但这是一个开始。
另一种方法是 QuickLook API,它的优点是不必运行源应用程序。到目前为止,Apple 也没有提供该 API 的读取功能。 Ciarán Walsh 几年前在 QL 上做了一些handy reverse engineering,我也使用过这种方法,但它有点笨拙。您可以像 Ciarán 解释的那样生成面板,但将其置于屏幕之外。然后,您可以使用NSBitmapImageRep -initWithFocusedViewRect: 将内容复制到 NSImage 中。不幸的是,您可能会在其中遇到一些时髦的视觉伪影(例如在某些情况下的滚动条),但对于某些应用程序来说,它可能是有效的。
【讨论】: