Я пытаюсь получить информацию обо всех различных мониторах (и их адаптерах), имеющихся в системе.До сих пор мои попытки использовать EnumDisplayDevices
для перечисления всех мониторов работали замечательно - было найдено два, первое - "\\.\DISPLAY1\Monitor0"
(второе - только 2 и 1 соответственно, но это не имеет отношения к этому вопросу).Во всяком случае, я тогда попытался вызвать EnumDisplaySettingsEx
на нем, передавая имя монитора, как указано выше, но он всегда терпит неудачу.Вызовы с параметром нулевого имени успешны, но возвращенная структура DEVMODE
говорит, что dmDeviceName
- это "cdd", что, я сильно сомневаюсь, является точным.Что я делаю не так?
О, и я пытался использовать EnumDisplaySettings
(не Ex), и это даже не работает с параметром нулевого имени.
P/ Вызывать подписи (Ex немного изменен по сравнению с таковым на pinvoke.net в стремительной попытке заставить его работать):
[DllImport("user32.dll")]
public static extern bool EnumDisplaySettings(string deviceName, int modeNum, ref DEVMODE devMode);
[DllImport("user32.dll", CharSet = CharSet.Ansi)]
public static extern bool EnumDisplaySettingsEx([MarshalAs(UnmanagedType.LPStr)]string lpszDeviceName, int iModeNum, ref DEVMODE lpDevMode, EdsDwFlags dwFlags);
DEVMODE
определено в http://www.pinvoke.net/default.aspx/Structures/DEVMODE.html. EdsDwFlags
сейчас всегда ноль.iModeNum
равно -1 (для текущих настроек).
И по какой-то причине StackOveflow не позволяет мне прикрепить тег C # к этому сообщению.