Estoy tratando de obtener el tamaño del escritorio de Windows (todo, no solo una pantalla) desde el interior de un servicio que he escrito.¿Obtener tamaño de escritorio desde el servicio de Windows?
En WinForms - el método estándar de C#:
SystemInformation.VirtualScreen.Width
SystemInformation.VirtualScreen.Height
parece funcionar (si importa el Winforms DLL, que quiero evitar) - pero devuelve el valor incorrecto. El tamaño del escritorio es 2048x768
(2 pantallas), pero el servicio informa 1024x768
(presumiblemente solo aparece en una de las pantallas)
La verificación de la opción para que el servicio interactúe con el escritorio no tiene ningún efecto.
¿Alguna idea?
Editar:
con las soluciones publicadas en C#: Get complete desktop size? no funcionan en el interior de un servicio. Todos ellos informan el valor incorrecto.
Curiosamente, parece que el valor que se informó varía y no tiene relación con el tamaño real de escritorio (algunas máquinas informan 800x600
a pesar de que una sola pantalla en esa máquina es una resolución mucho más alta.)
Así - ¿más ideas? Dejar caer en el registro y/o en la línea de comandos está bien. La única restricción es que no puedo iniciar una aplicación de winforms para resolverlo.
¿Tomó en cuenta el hecho de que el servicio se esté ejecutando en un sistema sin cabeza? ¿O simplemente no hay usuarios conectados? – Dmitry
Espero que este http://stackoverflow.com/questions/1317235/c-get-complete-desktop-size te ayude. –
Debo aclarar. Los sistemas sin cabeza no son una preocupación en esta configuración. En segundo lugar, me estoy adjuntando al evento de inicio de sesión, por lo que sé cuándo intentar averiguar el tamaño del escritorio (solo después de que alguien inicie sesión). – debracey