J'aimerais savoir comment faire une copie de la FENÊTRE ACTIVE dans une bitmap SANS UTILISER LE PRESSE-PAPIER !. J'ai lu l'article de Pierre Castelain 'Commment faire une copie d'écran et l'enregistrer dans un fichier' et j'aimerais le modifier pour faire une copie de la fenêtre active. Voici son code pour sauver l'écran au complet. Je pense qu'il n'y a pas beaucoup de modifications à faire.
Merci, Pierre-Yves Belleau
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
29
30 procedure ScreenShot(const Filename: string); var bitmap: TBitmap; desktopHandle: THandle; deviceContext: HDC; begin {----------------------------------------------------------------------} Attention il ne suffit pas de remplacer GetDesktopWindow par GetActiveWindow, il nous faut les dimensions de la fenêtre pour faire la copie dans le bitmap {----------------------------------------------------------------------} desktopHandle:= GetDesktopWindow; // Récupération du handle du bureau deviceContext:= GetDC(desktopHandle); // Récupération du contexte de périphérique du bureau bitmap:= TBitmap.Create; // Création d'une image bitmap try bitmap.Width:= Screen.Width; // Ajustement de la taille de l'image bitmap.Height:= Screen.Height; // pour qu'elle corresponde à celle du bureau BitBlt(bitmap.Canvas.Handle, 0, 0, bitmap.Width, bitmap.Height, deviceContext, 0, 0, SRCCOPY); // Copie du bureau dans l'image bitmap bitmap.SaveToFile(Filename); // Sauvegarde de l'image dans un fichier bmp finally bitmap.Free; // Libération de l'image ReleaseDC(desktopHandle, deviceContext); // Libération du contexte de périphérique end; end;
![]()
Partager