- unit Unit1;
-
- //
- // Programme d'impression d'écran et de sauvegarde automatique en .JPG
- //
- // Par Nono40 bruno_g40@hotmail.com
- //
- // 25/08/2002 : Publication sur www.DelpfiFR.com
- //
-
- interface
-
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls, ExtCtrls;
-
- type
- TForm1 = class(TForm)
- Timer1: TTimer;
- Edit1: TEdit;
- Label1: TLabel;
- procedure Timer1Timer(Sender: TObject);
- private
- { Déclarations privées }
- public
- { Déclarations publiques }
- end;
-
- var
- Form1: TForm1;
-
- implementation
-
- Uses JPeg,ClipBrd;
- {$R *.dfm}
-
- 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)
- Then Begin
- 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);
- Until Not 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)
- Then Begin
- If Not UneFois
- Then Begin
- // Si la touche est appuyée on enregistre le presse-papier sur le prochain OnTimer
- UneFois:=True;
- AFaire:=True;
- End;
- End
- Else Begin
- UneFois:=False;
- End;
- end;
-
- end.
unit Unit1;
//
// Programme d'impression d'écran et de sauvegarde automatique en .JPG
//
// Par Nono40 bruno_g40@hotmail.com
//
// 25/08/2002 : Publication sur www.DelpfiFR.com
//
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
Edit1: TEdit;
Label1: TLabel;
procedure Timer1Timer(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
Form1: TForm1;
implementation
Uses JPeg,ClipBrd;
{$R *.dfm}
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)
Then Begin
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);
Until Not 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)
Then Begin
If Not UneFois
Then Begin
// Si la touche est appuyée on enregistre le presse-papier sur le prochain OnTimer
UneFois:=True;
AFaire:=True;
End;
End
Else Begin
UneFois:=False;
End;
end;
end.