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 函数获取每个显示器的信息,并打印出显示器的位置和大小。

注意事项

注意:该示例代码仅演示了如何获取扩展屏幕的信息,并没有考虑多个扩展屏幕的情况。如果存在多个扩展屏幕,需要进一步处理。

C++ 获取扩展屏幕内容:MonitorFromWindow 函数示例

原文地址: https://www.cveoy.top/t/topic/pcgf 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录