一、整体思路
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)