Получить уникальный идентификатор для мониторов Windows - PullRequest
0 голосов
/ 14 мая 2018

У меня есть установка с двумя обычными дисплеями и тремя проекторами, подключенными к ПК с Windows.В моей программе win32 мне нужно уникально идентифицировать каждый монитор и хранить информацию для каждого из них, чтобы я мог получить сохраненную информацию даже после перезагрузки компьютера.

Кажется EnumDisplayDevices возвращать различные заказы устройств после перезагрузки компьютера.Существует также GetPhysicalMonitorsFromHMONITOR , который, по крайней мере, дает мне имя дисплея.Тем не менее, мне нужно что-то вроде серийного номера для моих проекторов, так как они одной модели.Как я могу получить такой уникальный идентификатор?

РЕДАКТИРОВАТЬ: Это решение я пришел после прочтения ответа от пользователя Андерс (спасибо!):

DISPLAY_DEVICEA dispDevice;
ZeroMemory(&dispDevice, sizeof(dispDevice));
dispDevice.cb = sizeof(dispDevice);

DWORD screenID;
while (EnumDisplayDevicesA(NULL, screenID, &dispDevice, 0))
{
    // important: make copy of DeviceName
    char name[sizeof(dispDevice.DeviceName)];
    strcpy(name, dispDevice.DeviceName);

    if (EnumDisplayDevicesA(name, 0, &dispDevice, EDD_GET_DEVICE_INTERFACE_NAME))
    {
        // at this point dispDevice.DeviceID contains a unique identifier for the monitor
    }

    ++screenID;
}

1 Ответ

0 голосов
/ 14 мая 2018

EnumDisplayDevices с флагом EDD_GET_DEVICE_INTERFACE_NAME должно дать вам пригодную для использования строку.И если нет, вы можете использовать эту строку с SetupAPI для получения идентификатора оборудования или ключа драйвера или того, что достаточно уникально для вашей цели.

Установите для этого флага значение EDD_GET_DEVICE_INTERFACE_NAME (0x00000001), чтобы получить устройствоимя интерфейса для GUID_DEVINTERFACE_MONITOR, который регистрируется операционной системой для каждого монитора.Значение помещается в член DeviceID структуры DISPLAY_DEVICE, возвращаемой в lpDisplayDevice.Полученное имя интерфейса устройства может использоваться с функциями SetupAPI и служит связующим звеном между устройствами монитора GDI и устройствами монитора SetupAPI.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...