macos - 在 Mac 上截取特定应用程序窗口的屏幕截图

标签 macos quartz-graphics

我正在尝试制作一个屏幕转换应用程序,它转换单个应用程序窗口而不是整个屏幕。首先,我尝试使用 Xcode 在我的 Mac 上对单个应用程序进行简单的屏幕截图。

到目前为止,我正在尝试使用 CGWindowListCreateImage但我遇到了问题。

编辑
所以这里有一个小例子,说明我如何设法获得 WindowID。之后使用它截取屏幕截图非常简单。
首先为事件添加一个全局监视器,更具体地说是 NSMouseEvents。我用鼠标向下。窗口信息存储在鼠标事件中。

    CGWindowID windowID = (CGWindowID)[event windowNumber];

然后,您可以使用下面的代码截取应用程序的屏幕截图,没有阴影等。
CGImageRef image = CGWindowListCreateImage(CGRectNull, kCGWindowListOptionIncludingWindow, self.WindowID, kCGWindowImageBoundsIgnoreFraming);

如果您需要更多,请告诉我。

最佳答案

所以这里有一个小例子,说明我如何设法获得 WindowID。之后使用它截取屏幕截图非常简单。首先为事件添加一个全局监视器,更具体地说是 NSMouseEvents。我用鼠标向下。窗口信息存储在鼠标事件中。

CGWindowID windowID = (CGWindowID)[event windowNumber];

然后,您可以使用下面的代码截取应用程序的屏幕截图,没有阴影等。
CGImageRef image = CGWindowListCreateImage(CGRectNull, kCGWindowListOptionIncludingWindow, self.WindowID, kCGWindowImageBoundsIgnoreFraming);

如果您需要更多,请告诉我。

关于macos - 在 Mac 上截取特定应用程序窗口的屏幕截图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21947646/

相关文章:

iphone - 在 iPhone 上使 UIImageView 不透明时出现问题

objective-c - 从另一个 subview 类中隐藏 subview

Intel Mac 上的 Javascript 正则表达式。模式和子模式替换有问题吗?

cocoa - CGContextRelease - 不被拥有的对象的引用计数的错误减少

events - 事件点击 : Varying results with CGEventPost, kCGSessionEventTap, kCGAnnotatedSessionEventTap, CGEventTapPostEvent

ios - 将 Quartz/Core Graphics 绘图保存到核心数据或文本文件并再次加载以继续绘图

ios - 根据 subview 所在的位置屏蔽掉 UIView 中的特定像素

c - 在 osx 上使用 gcc 编译 allegro5 程序时出错

macos - 在 Mac OS Finder 中打开终端

xcode - iOS 模拟器绘图太大(不是窗口比例问题)