如何使用Win32 API获取多个显示器的显示名称?

我有两个显示器连接到我的Windows PC – 一个是正常的显示器,另一个是投影机。 因为Windows不一致地分配一个或另一个作为主监视器(部分原因是它们并不总是在Windows引导时),所以我需要以编程方式检测哪个监视器是哪个。

控制面板将显示器的名称显示为“HP 2159”(普通显示器)和“PROJECTOR”,在您select的主显示器的屏幕上显示。 这是我想要在我的程序中获得的信息。

我找不到这个信息的正确的Win32 API函数。 我已经尝试了EnumDisplayDevicesEnumDisplayMontiors 。 两者都只是将“DISPLAY1”和“DISPLAY2”作为设备名称。 我应该用什么来获得“HP 2159”和“PROJECTOR”信息或类似的东西?

更新:这是我正在使用的Python代码:

 >>> import win32api >>> monitors = win32api.EnumDisplayMonitors() >>> win32api.GetMonitorInfo(monitors[0][0]) {'Device': '\\\\.\\DISPLAY1', 'Work': (0, 0, 1920, 1080), 'Flags': 1, 'Monitor': (0, 0, 1920, 1080)} >>> win32api.GetMonitorInfo(monitors[1][0]) {'Device': '\\\\.\\DISPLAY2', 'Work': (1920, 0, 3360, 1080), 'Flags': 0, 'Monitor': (1920, 0, 3360, 1080)} 

Solutions Collecting From Web of "如何使用Win32 API获取多个显示器的显示名称?"

EnumDisplayMonitors将一个监视句柄传递给MonitorEnumProc回调函数。 您可以将该句柄传递给GetMonitorInfo ,确保将指针传递给MonitorInfoEx结构,并相应地设置cbSize成员。

返回时, MonitorInfoEx结构中的szDevice字段将包含监视器的名称。