正在尝试检测显示器

Trying to detect monitor

本文关键字:检测 显示器      更新时间:2023-10-16

我正在尝试获取显示器以检查是否关闭。

在与GetDevicePowerState检查之前,我正在尝试以这种方式检索监视器:

#include <cstdlib>
#include <iostream>
#include <windows.h>
#include <winuser.h>
using namespace std;
int main(int argc, char *argv[])
{
    POINT* p = new POINT;
    p->x=0;
    p->y=0;
    HMONITOR* monitor = MonitorFromPoint(p,DWORD.MONITOR_DEFAULTTOPRIMARY);
    system("PAUSE");
    return EXIT_SUCCESS;
}

但它不断给我:

main.cpp `MonitorFromPoint' undeclared (first use this function) 

我哪里做错了?

您的代码存在许多问题,但这些问题都不应导致您看到的错误消息。以下是一些更正的代码,并添加了更多内容以显示至少某种测试结果:

#include <iostream>
#include <windows.h>
int main(int argc, char *argv[])
{
    POINT p{ 0, 0 };
    HMONITOR monitor = MonitorFromPoint(p, MONITOR_DEFAULTTONULL);
    if (monitor == NULL) 
        std::cout << "No monitor found for point (0, 0)n";
    else {
        MONITORINFOEX info;
        info.cbSize = sizeof(info);
        GetMonitorInfo(monitor, &info);
        std::cout << "Monitor: " << info.szDevice << "n";
    }
}

我已经用VC++ 2013和MinGW 4.8.1对此进行了测试,在这两种情况下,它都可以毫无问题地编译和运行,产生:

Monitor: \.DISPLAY1

。在这两种情况下都作为其输出。