C++ 获取扩展屏幕内容:MonitorFromWindow 函数示例
C++ 获取扩展屏幕内容:MonitorFromWindow 函数示例
在 C++ 中,可以使用 MonitorFromWindow 函数来获取指定窗口所在的显示器的句柄。然后,可以使用 GetMonitorInfo 函数来获取显示器的信息,包括显示器的位置、大小等。
示例代码
以下是一个示例代码,演示如何获取扩展屏幕的信息:
#include <iostream>
#include <Windows.h>
int main()
{
// 获取主屏幕的句柄
HMONITOR hPrimaryMonitor = MonitorFromWindow(NULL, MONITOR_DEFAULTTOPRIMARY);
// 获取所有显示器的句柄
HMONITOR hMonitors[16];
DWORD numMonitors;
if (EnumDisplayMonitors(NULL, NULL, MonitorEnumProc, (LPARAM)hMonitors, &numMonitors))
{
// 遍历所有显示器
for (DWORD i = 0; i < numMonitors; i++)
{
// 排除主屏幕
if (hMonitors[i] != hPrimaryMonitor)
{
MONITORINFO monitorInfo;
monitorInfo.cbSize = sizeof(MONITORINFO);
// 获取显示器的信息
if (GetMonitorInfo(hMonitors[i], &monitorInfo))
{
// 显示器的位置和大小
std::cout << 'Monitor ' << i + 1 << ' position: (' << monitorInfo.rcMonitor.left << ', ' << monitorInfo.rcMonitor.top << ')' << std::endl;
std::cout << 'Monitor ' << i + 1 << ' size: ' << monitorInfo.rcMonitor.right - monitorInfo.rcMonitor.left << ' x ' << monitorInfo.rcMonitor.bottom - monitorInfo.rcMonitor.top << std::endl;
}
}
}
}
return 0;
}
BOOL CALLBACK MonitorEnumProc(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData)
{
HMONITOR* hMonitors = (HMONITOR*)dwData;
hMonitors[i] = hMonitor;
return TRUE;
}
代码解释
该示例代码首先使用 MonitorFromWindow 函数获取主屏幕的句柄,然后使用 EnumDisplayMonitors 函数获取所有显示器的句柄。接下来,使用 GetMonitorInfo 函数获取每个显示器的信息,并打印出显示器的位置和大小。
注意事项
注意:该示例代码仅演示了如何获取扩展屏幕的信息,并没有考虑多个扩展屏幕的情况。如果存在多个扩展屏幕,需要进一步处理。
原文地址: https://www.cveoy.top/t/topic/pcgf 著作权归作者所有。请勿转载和采集!