我有一个与Windows PC连接的两个常规显示器和三个投影仪的设置。在我的Win32程序中,我需要唯一标识每个监视器并存储每个监视器的信息,以便我可以在计算机重新启动后检索存储的信息。
EnumDisplayDevices似乎在重新启动计算机后返回不同的设备顺序。还有GetPhysicalMonitorsFromHMONITOR,它至少给出了显示器的名称。但是,由于我的投影仪都是相同型号,因此我需要像串行号之类的唯一标识符。我该如何获得这样的标识符?
编辑:阅读用户Anders(感谢!)的答案后,我想到了以下解决方案:
编辑:阅读用户Anders(感谢!)的答案后,我想到了以下解决方案:
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;
}
EDD_GET_DEVICE_INTERFACE_NAME
时,DeviceID
就变成了空的。 - Zyl