我正在尝试从 Windows API 获取监控数据。该GetSystemMetrics()
命令返回错误的像素宽度。根据微软的网站,这是因为我需要SetProcessDPIAware()
这意味着我最好能够创建一个我不理解的应用程序清单。
在寻找同样低级的替代方案时,我发现了多个显示监视器的功能和结构。我必须通过HMONITOR
才能访问我想要的 rect 结构,但获取HMONITOR
是我遇到问题的地方。
MonitorFromWindow(hwnd,MONITOR_DEFAULTTOPRIMARY)
此命令超出范围 - 很奇怪,因为GetMonitorInfo()
[我需要HMONITOR
的] 不会导致任何问题。我已经拥有windows.h
并windowsx.h
包括在内。我错过了图书馆还是有什么问题?
在单独的说明中,在查看那里之后很明显,使用户可调节使用的显示器也可能很好。 SM_CMONITORS
应该返回一个计数,但我想知道如何将这些数字转换为HMONITOR
我需要获取监视器特定信息的数据。
::编辑::
我将编辑放在这里是因为“评论”功能没有为我提供足够的空间来放置所请求的代码剪辑
另外,我将 GNU GCC 与 MinGW 一起使用
#include <iostream>//using these libraries
#include <Windowsx.h>
#include <windows.h>
using namespace std;
int main()
{
//should print screen width in pixels
LPMONITORINFO target;
//create a monitor info struct to store the data to
HMONITOR Hmon = MonitorFromWindow(hwnd,MONITOR_DEFAULTTOPRIMARY);
//create a handle to the main monitor
//(should start at top left of screen with (0,0) as apposed to other monitors i believe)
//if i could gather aditional info on what monitors are available that might be useful
GetMonitorInfo(Hmon, target);
//Get the necessary data and store it to target
cout << "bottom of selected monitor in pixels: " << target->rcMonitor.bottom
<< "Top of the selected monitor" << target->rcMonitor.top
<< "right extreme of selected monitor" << target->rcMonitor.right
<< "left extreme of selected monitor" << target->rcMonitor.left;
return 0;
}