2012-05-19 18 views
5

Estoy tratando de identificar una pantalla en una configuración de monitores múltiples para guardar algunos datos vinculados a esa pantalla. ¿Cómo puedo identificar de forma confiable una pantalla, también después de reiniciar?Identificación de pantallas

Conozco la clase Screen en .Net, pero Screen.DeviceName parece no estar apuntando constantemente a una pantalla (por ejemplo, después de instalar un nuevo controlador de gráficos).

+0

¿Realmente espera poder cambiar los controladores de su dispositivo y seguir haciendo un seguimiento de cierta pantalla? La verdadera pregunta es, ¿por qué querrías hacer eso? –

+0

Bueno, porque estoy escribiendo una pequeña herramienta de monitores múltiples y necesito guardar configuraciones para cada pantalla. –

Respuesta

0

He resuelto esto consiguiendo el DeviceID con la API EnumDisplayDevices. Parece ser único para cada pantalla y no cambia después de una actualización del controlador, por ejemplo.

WMI está fuera de la cuestión para mí, como lo intenté antes, y solo devuelve un monitor con mi configuración de monitores múltiples.

0

Pruebe WMI en lugar de WinForms.

el siguiente post se muestra cómo obtener los monitores y sus detalles (s DisplayDetails clase, por ejemplo.): Monitor ID and Serial Number

Editar:

Mi sugerencia:

using System.Management; 

ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_DesktopMonitor");  
foreach (ManagementObject obj in searcher.Get()) 
    Console.WriteLine("PNP Device ID: {0}", obj ["PNPDeviceID"]); 
+0

Tengo dos monitores y esa consulta devuelve solo uno –

Cuestiones relacionadas