Une question qui revient fréquemment dans les forums Microsoft : « Comment réaliser une capture d’écran de tout le bureau Windows ?« .
Voici le code d’une méthode static CapturerBureauWindows() permettant de réaliser une capture de tout le bureau Windows en utilisant du code managé uniquement. Ce code fonctionne avec le .NET Framework 2.0 (et donc avec les versions supérieures).
public static Bitmap CapturerBureauWindows() { Rectangle tailleTotale; // Taille totale du bureau de Windows Bitmap image; // Capture de l'écran // Récupérer la taille totale du bureau de Windows tailleTotale = Screen.AllScreens[0].Bounds; for (int i = 1; i < Screen.AllScreens.Length; i++) { tailleTotale = Rectangle.Union(tailleTotale, Screen.AllScreens[i].Bounds); } // Créer une image de la taille du bureau de Windows image = new Bitmap(tailleTotale.Width, tailleTotale.Height); // Créer un Graphics à partir de l'image et faire la capture dans celui-ci using (Graphics g = Graphics.FromImage(image)) { g.CopyFromScreen(tailleTotale.Location, Point.Empty, tailleTotale.Size); } return image; }
Public Shared Function CapturerBureauWindows() As Bitmap Dim tailleTotale As Rectangle ' Taille totale du bureau de Windows Dim image As Bitmap ' Capture de l'écran ' Récupérer la taille totale du bureau de Windows tailleTotale = Screen.AllScreens(0).Bounds For i As Integer = 1 To Screen.AllScreens.Length - 1 tailleTotale = Rectangle.Union(tailleTotale, Screen.AllScreens(i).Bounds) Next ' Créer une image de la taille du bureau de Windows image = New Bitmap(tailleTotale.Width, tailleTotale.Height) ' Créer un Graphics à partir de l'image et faire la capture dans celui-ci Using g As Graphics = Graphics.FromImage(image) g.CopyFromScreen(tailleTotale.Location, Point.Empty, tailleTotale.Size) End Using Return image End Function
Une fois l’objet Bitmap obtenu, il est possible de dessiner la capture dans une surface GDI+ ou de l’enregistrer dans un fichier. Le code suivant illustre l’utilisation de la méthode Save() de l’objet Bitmap :
Bitmap capture; capture = CapturerBureauWindows(); capture.Save(@"C:\...\MaCapture.jpg");
Dim capture As Bitmap capture = CapturerBureauWindows() capture.Save("C:\...\MaCapture.jpg")
Bonjour,
Merci pour cet article.
ça marche bien… mais quand j’essaye de l’implémenter sous forme de service windows, cela ne marche pas…
Une suggestion pour une implémentation de la capture d’écran sous forme de service windows ?
Merci bien.
Bonjour Zéphyrin,
La capture d’écran ne fonctionne pas dans les services Windows.
Cordialement
Bonjour,
Je confirme que cela ne marche pas dans un service windows.