private static IEnumerable<string> GetAllMonitorsFriendlyNames()
{
uint pathCount, modeCount;
var error = GetDisplayConfigBufferSizes(QueryDeviceConfigFlags.QdcOnlyActivePaths, out pathCount,
out modeCount);
if (error != ErrorSuccess)
throw new Win32Exception(error);
var displayPaths = new DisplayconfigPathInfo[pathCount];
var displayModes = new DisplayconfigModeInfo[modeCount];
error = QueryDisplayConfig(QueryDeviceConfigFlags.QdcOnlyActivePaths,
ref pathCount, displayPaths, ref modeCount, displayModes, IntPtr.Zero);
if (error != ErrorSuccess)
throw new Win32Exception(error);
for (var i = 0; i < modeCount; i++)
if (displayModes[i].infoType == DisplayconfigModeInfoType.DisplayconfigModeInfoTypeTarget)
yield return MonitorFriendlyName(displayModes[i].adapterId, displayModes[i].id);
}