代码之家  ›  专栏  ›  技术社区  ›  H2O

捕获屏幕的替代方法?(C++,Windows操作系统)

  •  3
  • H2O  · 技术社区  · 16 年前
    keybd_event(VK_SNAPSHOT, 0x45, KEYEVENTF_EXTENDEDKEY, 0);
    keybd_event(VK_SNAPSHOT, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
    HBITMAP h;
    
    OpenClipboard(NULL);
    h = (HBITMAP)GetClipboardData(CF_BITMAP);
    CloseClipboard();
    ...
    

    通常情况下,这很有效。 但如果前台窗口更改并锁定剪贴板,则无法打开剪贴板。

    有没有其他方法可以捕获屏幕-也可以在后台工作-?

    谢谢,

    2 回复  |  直到 16 年前
        1
  •  3
  •   Johann Gerell    16 年前

    捕获监视器1屏幕的简单方案,对我很有帮助,但并没有覆盖所有角落的情况:

    1. 获取屏幕设备上下文。
    2. 创建与屏幕设备上下文兼容的设备上下文。
    3. 创建一个与设备无关的位图(需要获取像素数据),其大小与屏幕分辨率相同。
    4. 在兼容的设备上下文中选择与设备无关的位图。
    5. 位将屏幕设备上下文链接到兼容的设备上下文。
    6. 取消选择与设备无关的位图。
    7. 图像数据现在位于与设备无关的位图中。
    8. 也可以将图像数据写入文件。
        2
  •  1
  •   default    16 年前

    Capturing an Image
    这是你要找的吗?这个例子基本上是以一个打印屏幕为例。