Как узнать, использует ли пользователь несколько мониторов

Я пытаюсь найти способ узнать, использует ли пользователь несколько мониторов.

Я хотел бы знать, как это сделать в родном С++ (с использованием Win32 API) и с управляемым кодом (с использованием .NET Framework).

Заранее спасибо

Ответ 1

Я могу дать вам С#.NET:

if (Screen.AllScreens.Length > 1)
{
    // Multiple monitors
}

Изменить: Поиск в Google показал следующее. В нем упоминается 98/ME, поэтому он может быть неактуальным, но может указывать вам в правильном направлении:

В Windows 98 появились новые API-интерфейсы для обработки нескольких мониторов. API-интерфейсы, используемые в образце классов мониторов, - это GetMonitorInfo, MonitorFromWindow и MonitorFromRect.

В API GetSystemMetrics есть несколько новых констант (см. ниже), которые можно использовать для определения показателей системы с несколькими мониторами. API GetSystemMetrics возвращает информацию о среде Windows. Этот API может использоваться для определения количества мониторов в системе, независимо от того, установлены ли они в одном и том же формате отображения и размер виртуального рабочего стола.

http://support.microsoft.com/kb/194578

Ответ 2

В .NET это так же просто, как использование свойства Screen.AllScreens.Length. Не слишком уверен в С++, хотя.

Ответ 3

GetSystemMetrics с помощью SM_CMONITORS и с вами...

Ответ 4

Просто зарегистрируйте здесь решение C/С++:

int iMonitors = GetSystemMetrics(SM_MONITORS);