Maison > développement back-end > C++ > Comment puis-je capturer une capture d'écran d'une fenêtre d'application spécifique à l'aide de C# ?

Comment puis-je capturer une capture d'écran d'une fenêtre d'application spécifique à l'aide de C# ?

Susan Sarandon
Libérer: 2025-01-17 12:01:09
original
872 Les gens l'ont consulté

How Can I Capture a Screenshot of a Specific Application Window Using C#?

Prendre une capture d'écran d'une application spécifique en utilisant C#

Parfois, vous devrez peut-être uniquement prendre une capture d'écran d'une fenêtre d'application spécifique, plutôt que de l'intégralité de l'écran. Dans ce cas, le processus est un peu plus compliqué.

API PrintWindow : Solution d'interception d'applications

L'API PrintWindow sous Windows vous permet de capturer un bitmap d'une fenêtre spécifiée, même si elle est masquée par d'autres éléments ou située hors écran.

Mise en œuvre du code

Pour profiter de PrintWindow, suivez ces étapes :

  1. Obtenir la poignée de fenêtre : utilisez la fonction GetWindowRect pour obtenir les coordonnées rectangulaires de la fenêtre d'application souhaitée.
  2. Initialiser Bitmap : Créez un objet Bitmap qui correspond à la taille de la fenêtre.
  3. Obtenir le contexte graphique : dérivez un contexte graphique à partir du bitmap.
  4. Capturer le bitmap de la fenêtre : appelez PrintWindow pour capturer le bitmap de la fenêtre vers le HDC associé au contexte graphique.
  5. Récupérer le bitmap et nettoyer : libère le contexte graphique, traite le bitmap et renvoie l'image capturée.

Voici un exemple de code :

<code class="language-csharp">using System.Drawing;
using System.Runtime.InteropServices;

public static class ScreenshotHelper
{
    [DllImport("user32.dll")]
    private static extern bool PrintWindow(IntPtr hWnd, IntPtr hdcBlt, int nFlags);

    [DllImport("user32.dll")]
    private static extern bool GetWindowRect(IntPtr hWnd, out RECT lpRect);

    public static Bitmap CaptureWindow(IntPtr hwnd)
    { 
        RECT rc;
        GetWindowRect(hwnd, out rc);

        Bitmap bmp = new Bitmap(rc.Width, rc.Height, PixelFormat.Format32bppArgb);
        Graphics gfxBmp = Graphics.FromImage(bmp);
        IntPtr hdcBitmap = gfxBmp.GetHdc();

        PrintWindow(hwnd, hdcBitmap, 0);

        gfxBmp.ReleaseHdc(hdcBitmap);
        gfxBmp.Dispose();

        return bmp;
    }
}

[StructLayout(LayoutKind.Sequential)]
public struct RECT
{
    public int Left;
    public int Top;
    public int Right;
    public int Bottom;
}</code>
Copier après la connexion

Résumé

Grâce à l'API PrintWindow, vous pouvez facilement prendre des captures d'écran d'applications spécifiques, même si ces applications peuvent être minimisées ou masquées par une fenêtre supérieure. Cette technologie offre de nombreuses possibilités de manipulation de fenêtres et d'acquisition d'images.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal