У меня есть установка с двумя обычными дисплеями и тремя проекторами, подключенными к ПК с 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;
}