2010-02-08 34 views
10

Estoy tratando de encontrar una manera de saber si el usuario está usando monitores múltiples.Cómo saber si el usuario está usando monitores múltiples

Me gustaría saber cómo hacerlo en C++ nativo (usando la API Win32) y con código administrado (usando .NET Framework).

Gracias de antemano

+0

un código muy elegante LINQ en C# aquí por Rob Fonseca-Ensor que calculará los límites de todas las pantallas actuales en uso: http://stackoverflow.com/questions/2176648/screen-overlay-for-screenshot/2176683#2176683 – BillW

Respuesta

12

que puedo darle C# .NET:

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

Editar: Una búsqueda en Google se presentó la siguiente. Menciona 98/ME por lo que puede no ser relevante pero puede apuntarle en la dirección correcta:

Hay nuevas API para manejar monitores múltiples en Windows 98. Las API utilizadas en el ejemplo de clase de monitores son GetMonitorInfo, MonitorFromWindow y MonitorFromRect.

La API GetSystemMetrics tiene algunas nuevas constantes (ver a continuación) que se pueden utilizar para determinar las métricas de un sistema de monitores múltiples. La API GetSystemMetrics devuelve información sobre el entorno de Windows. Esta API se puede usar para determinar cuántos monitores hay en el sistema, si están configurados con el mismo formato de visualización y el tamaño del escritorio virtual.

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

+0

¡Maldición, vencerme! jaja –

+0

jajaja que estaba cerca :-) –

+0

Gracias. Ambas respuestas fueron precisas. Pude obtener el número de monitores utilizando la función GetSystemMetrics pasando como argumento la constante SM_CMONITORS. – Raphael

6

En .NET es tan simple como el uso de la propiedad Screen.AllScreens .length. Aunque no estoy seguro acerca de C++.

6

GetSystemMetrics con SM_CMONITORS y listo ...

+0

Tenía la sensación de que era 'GetSystemMetrics'. –

+0

Utilizando tres monitores diariamente, necesitaba aprender esto rápidamente;> –

2

Sólo para documentar aquí la solución de C/C++:

int iMonitors = GetSystemMetrics(SM_MONITORS); 
Cuestiones relacionadas