Как узнать тип подключенного(ых) монитора(ов) в Windows XP?

Мне нужно знать тип монитора (мониторов), то есть плоский экран, ЭЛТ и т. д., который используется компьютером из программы на C++. Основное требование состоит в том, чтобы этот код работал на Windows XP SP3 (потому что в противном случае система работает на ЖК-экране).

Мне нужно, чтобы реализовать затемнение экрана для экономии энергии, которое будет работать только на ЭЛТ и иметь противоположный эффект на плоских экранах.

есть идеи как это сделать?


person ahmd0    schedule 13.08.2012    source источник
comment
Очень большие изменения в Vista, поддержка новых классов WMI для получения такой информации. Поддерживается новой моделью драйвера LDDM. XP? Что ж, 11 лет назад жизнь была намного проще.   -  person Hans Passant    schedule 14.08.2012
comment
Да, я знаю. К сожалению, систем XP гораздо больше, чем Vista, где эти знания действительно необходимы.... :(   -  person ahmd0    schedule 14.08.2012
comment
Интересно. Какой код вы пишете, где может иметь значение, что это ЭЛТ, ЖК-дисплей или светодиод?   -  person AJG85    schedule 14.08.2012
comment
@ AJG85: Спасибо всем, кто проголосовал против. Такие вопросы, как ваш, меня всегда поражают. Стоит ли вообще тратить на это время, если вы не готовы помочь? Мне нужно, чтобы реализовать затемнение экрана для экономии энергии, которое будет работать только на ЭЛТ и иметь противоположный эффект на плоских экранах.   -  person ahmd0    schedule 14.08.2012
comment
@ahmd0 ahmd0 Я ни за что не голосовал, мне было просто любопытно, поэтому комментарий.   -  person AJG85    schedule 14.08.2012
comment
Это, вероятно, еще одна проблема XY. Как вы думаете, зачем вам нужна эта информация? Спрашивайте о проблеме, а не о своем наполовину готовом решении. Слишком много угловых случаев, например. ЖК-дисплей не работает с родным разрешением.   -  person MSalters    schedule 14.08.2012
comment
Мне нужно знать... - Стоп. Вам не нужно знать это, не по какой-либо здравой причине. Иди переосмысли свою проблему.   -  person Griwes    schedule 14.08.2012


Ответы (1)


Вы можете получить большую часть информации о мониторе, используя функцию GetMonitorInfo в Win32 API.

BOOL GetMonitorInfo(
  __in   HMONITOR hMonitor,
  __out  LPMONITORINFO lpmi
);

Это даст вывод в структуру MONITORINFO или MONITORINFOEX, где вы можете извлечь информацию о текущем подключенном мониторе.

person Dilhan Geeth    schedule 16.08.2012
comment
Извините, а как узнать тип монитора из этих структур? - person ahmd0; 17.08.2012