C++检索所有显示监视器的信息,并输出显示器对应的句柄
时间: 2024-10-13 15:09:44 浏览: 19
在C++中,要获取显示监视器的信息并输出对应句柄,通常需要使用Windows API函数,特别是`EnumDisplayMonitors`和`GetMonitorInfo`。以下是一个简单的示例,说明如何做到这一点:
```cpp
#include <windows.h>
#include <iostream>
// 获取显示器信息的辅助函数
std::wstring get_monitor_info(HMONITOR hMonitor) {
MONITORINFO monitorInfo = { sizeof(MONITORINFO) };
if (GetMonitorInfo(hMonitor, &monitorInfo)) {
return L"Monitor " + std::to_wstring(monitorInfo.rcMonitor.left) + L", " +
std::to_wstring(monitorInfo.rcMonitor.top) + L", " +
std::to_wstring(monitorInfo.rcMonitor.right - monitorInfo.rcMonitor.left) + L", " +
std::to_wstring(monitorInfo.rcMonitor.bottom - monitorInfo.rcMonitor.top);
} else {
return L"Failed to get monitor info";
}
}
int main() {
HMONITOR monitors[MONITORS_MAX];
DWORD count;
if (EnumDisplayMonitors(NULL, NULL, nullptr, // Enumerate all monitors
monitors, MONITORS_MAX, &count)) {
for (DWORD i = 0; i < count; ++i) {
std::wcout << "Monitor Handle: " << monitors[i] << ", Information: " << get_monitor_info(monitors[i]) << std::endl;
}
} else {
std::cerr << "Failed to enumerate monitors" << std::endl;
}
return 0;
}
```
这个程序首先创建一个存储显示器句柄的数组,然后遍历每个显示器,调用`GetMonitorInfo`获取相关信息并打印出来。请注意,你需要包含`windows.h`头文件,并确保你的应用程序有适当的权限访问系统信息。
阅读全文