Tenemos que ejecutar un proceso desde un servicio de Windows y obtener una captura de pantalla de la misma.Captura de pantalla del proceso en el Servicio de Windows
Probamos las llamadas BitBlt y PrintWindow Win32, pero ambas dan bitmaps en blanco (negro).
Si ejecutamos nuestro código desde un proceso de usuario normal, funciona bien.
¿Es esto algo que incluso es posible? ¿O podría haber otro método para probar?
cosas que probamos:
- servicio de Windows que se ejecuta como sistema local, el proceso se ejecuta como sistema local -> pantalla falla
- servicio de Windows que se ejecuta como administrador, el proceso se ejecuta como administrador -> pantalla falla.
- Aplicación de Windows que se ejecuta como usuario XYZ, ejecuta un proceso como XYZ -> captura de pantalla funciona con BitBlt o PrintWindow.
- Intentó marcar "Permitir a los servicios interactuar con el Escritorio" de sistema local
También hay que destacar que PrintWindow funciona mejor para nuestro caso, funciona si la ventana está detrás de otra ventana.
Para otros requisitos, los procesos padre e hijo deben estar bajo el mismo usuario. Realmente no podemos usar la suplantación de un proceso a otro.
¿Intentó permitir que el servicio interactúe con el escritorio? –
Muy buena idea, pero tampoco funcionó. También creo que cuando lo ejecuté como usuario administrador, fue el equivalente a hacer esto. No puede ver a un usuario y marcar "permitir que el servicio interactúe con el escritorio" desde la consola de administración; está deshabilitado. – jonathanpeppers
Esas búsquedas, consulte también [Pantalla de captura en la sesión del escritorio del servidor] (http://stackoverflow.com/questions/5200341/capture-screen-on-server-desktop-session/12851218) – Theraot