Dobbiamo eseguire un processo da un servizio Windows e ottenere uno screenshot da esso.Screenshot del processo in Servizio Windows
abbiamo provato il BitBlt e PrintWindow chiamate Win32, ma entrambi danno bitmap (nero) in bianco.
Se si corre il nostro codice da un processo utente normale, funziona bene.
È qualcosa che è persino possibile? O potrebbe esserci un altro metodo da provare?
cose che abbiamo cercato:
- servizio di Windows in esecuzione come sistema locale, il processo viene eseguito come sistema locale -> screenshot non riesce
- servizio di Windows in esecuzione come amministratore, processo viene eseguito come amministratore -> screenshot fallisce.
- Applicazione Windows in esecuzione come utente XYZ, esegue un processo come XYZ -> screenshot funziona con BitBlt o PrintWindow.
- provato a controllare "Consenti al servizio di interagire con il desktop" dal sistema locale
Abbiamo anche notato che PrintWindow funziona meglio per il nostro caso, funziona se la finestra è dietro un'altra finestra.
Per gli altri requisiti, sia i processi padre e figlio devono essere sotto lo stesso utente. Non possiamo davvero usare la rappresentazione da un processo all'altro.
Hai provato a consentire al servizio di interagire con il desktop? –
Ottima idea, ma non ha funzionato neanche. Penso anche che quando l'ho eseguito come utente amministratore, era l'equivalente a farlo. Non è possibile un utente e selezionare "Consenti al servizio di interagire con il desktop" dalla console di gestione: è disabilitato. – jonathanpeppers
Quelli che cercano, vedi anche [Cattura schermo sulla sessione desktop del server] (http://stackoverflow.com/questions/5200341/capture-screen-on-server-desktop-session/12851218) – Theraot