У меня возникли проблемы с получением имени монитора с помощью 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
является поставщиком графического процессора. Использование структуры MONITORINFOEX
дает мне то же значение, что и DeviceName
.
Чтобы быть ясным, я ищу что-то вроде «Samsung blah blah» или того, что появляется на панели управления на странице разрешения экрана.
Вы инициализируете 'oDisplayDevice.cb'' sizeof (oDisplayDevice) '? –
Да - я даже Zero'd память и переназначил его между вызовами, и он все еще не работает. – NmdMystery