2009-10-08 6 views

Respuesta

38

En C#: Screen Class Representa un dispositivo de visualización o múltiples dispositivos de visualización en un único sistema. Desea el atributo Bounds.

foreach(var screen in Screen.AllScreens) 
{ 
    // For each screen, add the screen properties to a list box. 
    listBox1.Items.Add("Device Name: " + screen.DeviceName); 
    listBox1.Items.Add("Bounds: " + screen.Bounds.ToString()); 
    listBox1.Items.Add("Type: " + screen.GetType().ToString()); 
    listBox1.Items.Add("Working Area: " + screen.WorkingArea.ToString()); 
    listBox1.Items.Add("Primary Screen: " + screen.Primary.ToString()); 
} 
+1

Al usar 'foreach (pantalla de pantalla en Screen.AllScreens)' esto se ve aún mejor. –

+0

De hecho. Cuando respondí, no sabía C# :) –

+0

Esto solo muestra un monitor cuando se ejecuta desde un servicio, ¿hay algún problema? –

2

http://msdn.microsoft.com/en-us/magazine/cc301462.aspx

GetSystemMetrics es una función muy útil que puede utilizar para obtener todo tipo de dimensiones globales, como el tamaño de un icono o la altura de un título de la ventana. En Windows 2000, hay nuevos parámetros como SM_CXVIRTUALSCREEN y SM_CYVIRTUALSCREEN para obtener el tamaño virtual de la pantalla para sistemas de monitores múltiples. Los novatos de Windows (y también los profesionales) deben consultar la documentación de GetSystemMetrics para ver las diferentes métricas (dimensiones) del sistema que puede obtener. Consulte Platform SDK para obtener la última información al http://msdn.microsoft.com/library/en-us/sysinfo/sysinfo_8fjn.asp. GetSystemMetrics es una función útil que con frecuencia necesita usar, y nuevas cosas aparecen con cada versión de Windows.

+0

Esto es genial. Hay código administrado para la mayoría de estas cosas ... Por ejemplo, la clase 'System.Windows.Forms.SystemInformation' probablemente contiene una mayoría. – mbrownnyc

5

Utilice Screen class.

Puede ver todos los monitores en la matriz Screen.AllScreens y verificar la resolución y posición de cada uno usando la propiedad Bounds.

Tenga en cuenta que algunas tarjetas de video fusionarán dos monitores en una sola pantalla muy ancha, por lo que Windows cree que solo hay un monitor. Si lo desea, puede verificar si el ancho de una pantalla es más del doble de su altura; si es así, es probable que sea un tramo horizontal y puede tratarlo como dos pantallas iguales. Sin embargo, esto es más complicado y no es necesario que lo hagas. Los tramos verticales también son compatibles, pero menos comunes.

Cuestiones relacionadas