2021-09-13 多屏下获取各个屏幕快照

一、整体思路

1.通过EnumDisplayMonitors枚举所有显示器,GetMonitorInfo和EnumDisplaySettings获取详细信息
2.将上面信息放入GDI api进行抓屏
3.转换成bmp文件

二、代码

#include <stdio.h>
#include <Windows.h>
#include <tchar.h>
#include <fstream>
#include <vector>
#include <string>

struct MonitorProperty
{
   
    int width;
    int height;
    int x;
    int y;
    HDC hdc;
    HMONITOR hmonitor;
    std::basic_string<TCHAR> monitor_name;
    bool flag;
};

BOOL CALLBACK callback_enum_monitor(HMONITOR h_monitor, HDC hdc_monitor, LPRECT lp_monitor, LPARAM data)
{
   
    std::vector<MonitorProperty> *monitor_arr = (std::vector<MonitorProperty> *)data;
    MonitorProperty monitor;
    monitor.hmonitor = h_monitor;
    monitor.hdc = hdc_monitor;

    MONITORINFOEX miex;
    miex.cbSize = sizeof(miex);
    GetMonitorInfo(h_monitor, &miex);
    monitor.monitor_name = {
    miex.szDevice };
    monitor.flag = (miex.dwFlags == MONITORINFOF_PRIMARY) 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值