NOTES :
Cette fonction utilise la fonction API GetAsyncKeyState() permettant de connaitre l'état appuyé ou relâché des touches, même si l'application n'est pas active.
Pour réaliser une copie d'écran il suffit d'appuyer sur la touche... PrintScreen du clavier. L'image sera alors enregistrée dans le répertoire spécifié dans la fenêtre de l'application.
Le nom de l'image est de la forme 'imagexxx.jpg' ou xxx est incrémenté à chaque copie d'écran.
Var UneFois:Boolean=False; // Permet de détecter le premier appui de la touche
AFaire :Boolean=False; // Retarde l'enregistrement du .JPG
Procedure TForm1.Timer1Timer(Sender: TObject); Var BitMap :TBitMap;
Image :TJpegImage;
NomFichier :String;
i :Integer; Begin
// On doit enregistrer le presse-papier car PrintScreen à été appuyée If AFaire And ClipBoard.HasFormat(cf_BitMap) ThenBegin
BitMap:=TBitMap.Create;
Image :=TJpegImage.Create; Try // Chargement dans un BitMap du presse papier ( au format BMP )
BitMap.LoadFromClipboardFormat(cf_BitMap,ClipBoard.GetAsHandle(cf_Bitmap),0);
Image.CompressionQuality:=80; // Conversion du BMP et JPG moins gros
Image.Assign(BitMap); // Recherche d'un nom de fichier non utilisé
I:=1; Repeat
NomFichier:=Edit1.Text+'\IMAGE'+IntToStr(i)+'.JPG';
Inc(i); UntilNot FileExists(NomFichier); // Enregistrement de l'image Try
Image.SaveToFile(NomFichier); Except End; Finally
BitMap.Free;
Image .Free; End; End;
AFaire:=False;
// Test de la touche d'impression de l'écran If ((GetAsyncKeyState(VK_SNAPSHOT) And 32768) <> 0) ThenBegin IfNot UneFois ThenBegin // Si la touche est appuyée on enregistre le presse-papier sur le prochain OnTimer
UneFois:=True;
AFaire:=True; End; End ElseBegin
UneFois:=False; End; End;