, Я надеюсь, что кто-то скоро сможет перевести это на Delphi, который я ищу.
аюсь получить понятное название для мониторов в моей системе. Я использую C #.
я пыталсяScreen
что просто дает мне//./DisplayXX
, Я также попробовал обаWin32_DesktopMonitor
а такжеEnumDisplayDevices
они все дают мне вариации//./DisplayXX
ИЛИ ЖЕGeneric Monitor
в то время как я знаю, что мои имена дисплеевSyncMaster
а такжеSM2333T
.
Теперь Windows знает, что это за мониторы, отображает их вУстройства и принтеры окна с правильными именами, а также в диалоге для настройки местоположения и разрешения.
Где я могу взять эти имена? Я посмотрел в реестре и не могу найти их, поэтому любая помощь будет отличной.
РЕШЕНИЕ: Проблема у меня была при звонкеEnumDisplayDevices
во второй раз я устанавливалiDevNum
снова идентифицировать, что означало, что я пытался получить данные из неправильного места, затем я заменил это на 0, и это работает отлично, см. код ниже.
var device = new DISPLAY_DEVICE();
device.cb = Marshal.SizeOf(device);
try
{
for (uint id = 0; EnumDisplayDevices(null, id, ref device, 0); id++)
{
Console.WriteLine(String.Format("{0}, {1}, {2}, {3}, {4}, {5}", id, device.DeviceName, device.DeviceString, device.StateFlags, device.DeviceID, device.DeviceKey));
Console.WriteLine();
device.cb = Marshal.SizeOf(device);
EnumDisplayDevices(device.DeviceName, 0, ref device, 0);
Console.WriteLine(String.Format("{0}, {1}, {2}, {3}, {4}, {5}", id, device.DeviceName, device.DeviceString, device.StateFlags, device.DeviceID, device.DeviceKey));
device.cb = Marshal.SizeOf(device);
device.cb = Marshal.SizeOf(device);
return;
}
}
}
catch (Exception ex)
{
Console.WriteLine(String.Format("{0}", ex.ToString()));
}