Bonjour à tous,
J'utilise ce code, qui fonctionne comme je le souhaite lorsque la fenêtre en cours est en plein écran.
Il utilise la fonction GetDesktopWindow et calcule donc la position à selectionner à partir du coin supérieur gauche de l'écran.
Ma question est de savoir quelle fonction API me permettrai de faire la même chose, mais à la place de GetDesktopWindow...

Voici le code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
'Déclaration copie d'écran
    Private Declare Function BitBlt Lib "gdi32.dll" (ByVal hdcDest As IntPtr, ByVal nXDest As Integer, ByVal nYDest As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal hdcSrc As IntPtr, ByVal nXSrc As Integer, ByVal nYSrc As Integer, ByVal dwRop As System.Int32) As Boolean
    Private Declare Function GetTopWindow Lib "user32" () As IntPtr
    Dim Image
'Capture d'écran programmée
    Private Sub Button_GENCARTE_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_GENCARTE.Click
        'Définition des variables qui délimitent la zone à capturer (carte)
        Dim xDeb, xFin, yDeb, yFin As Integer
 
        'Création d'un objet Graphics qui pointe sur l'écran
        Dim g1 As Graphics = Graphics.FromHwnd(GetDesktopWindow)
        xDeb = +277
        yDeb = 15 + 9
        xFin = +277 + 395
        yFin = 16 + 9 + 255
        'Création d'un bitmap de même taille que la zone à capturer
        Image = New Bitmap(xFin - xDeb + 1, yFin - yDeb + 1, g1)
        Dim g2 As Graphics = Graphics.FromImage(Image)
        'Création du contexte de périphérique de la fiche
        'Création du contexte de périphérique de l'image bitmap
        Dim dc1 As IntPtr = g1.GetHdc
        Dim dc2 As IntPtr = g2.GetHdc
        'Copie de l'écran dans l'image bitmap
        BitBlt(dc2, 0, 0, xFin - xDeb + 1, yFin - yDeb + 1, dc1, xDeb, yDeb, &HCC0020)
        PictureBox2.Image = Image
        'Libération des contextes de périphériques
        g1.ReleaseHdc(dc1)
        g2.ReleaseHdc(dc2)

Merci d'avance de votre aide précieuse

Quentin