如何在屏幕上的某个位置找到一个窗口以进行屏幕截图/屏幕录制?

时间:2010-05-19 20:14:48

标签: cocoa winapi x11 macos-carbon window-managers

我正在寻找一种方法来完成相当于WindowFromPoint和GetWindowRect的方法,在Carbon / Cocoa和X11中。

WindowFromPoint - http://msdn.microsoft.com/en-us/library/ms633558%28VS.85%29.aspx GetWindowRect - http://msdn.microsoft.com/en-us/library/ms633519%28VS.85%29.aspx

2 个答案:

答案 0 :(得分:4)

  

我正在开发截图和屏幕录制应用......

使用Quartz Window Services

  

我想...确定窗口的边界矩形,然后使用窗口的坐标来捕获屏幕区域的位图......

绝对使用Quartz Window Services。

顺便提一下,它的一个功能是你可以孤立地捕获一个窗口,而不会有任何可能在它前面或后面的东西。这样做时你不需要得到它的矩形。

  

...并将其保存到文件中......

使用CGImageDestination

  

...或将其编码为视频流。

那部分我不确定。 The sample code on the matter(正如其名称所示,使用OpenGL进行实际捕获)使用仅32位的QuickTime C API而不是64位兼容的QuickTime Kit来编写电影。

答案 1 :(得分:1)

要回答此问题的X11部分:您可以使用XQueryPointer的child_return来实现与WindowFromPont类似的功能。 XGetGeometry应该会获取GetWindowRect信息。