【发布时间】:2013-11-19 00:07:03
【问题描述】:
我在使用 winapi 检索监视器的名称时遇到了一些麻烦。根据stackoverflow上的其他条目,获取监视器名称的正确方法是:
EnumDisplayDevices(nullptr, 0, &oDisplayDevice, 0);
char lpszDeviceName[32];
memcpy(lpszDeviceName, oDisplayDevice.DeviceName, 32);
EnumDisplayDevices(lpszDeviceName, 0, &oDisplayDevice, 0);
char lpszMonitorName[128];
memcpy(lpszMonitorName, oDisplayDevice.DeviceString, 128);
但是,EnumDisplayDevices 第二次返回FALSE。第一次出现时,DeviceName 是 \\DISPLAY1,DeviceString 是 GPU 供应商。使用 MONITORINFOEX 结构可以得到与 DeviceName 相同的值。
明确地说,我正在寻找类似“Samsung blah blah”之类的内容,或者屏幕分辨率页面上控制面板中显示的内容。
【问题讨论】:
-
您是否将
oDisplayDevice.cb初始化为sizeof(oDisplayDevice)? -
是的 - 我什至将内存归零并在调用之间重新分配它,但它仍然不起作用。