Developpez.com - Delphi
X

Choisissez d'abord la catégorieensuite la rubrique :

Nono40.developpez.com
Le petit coin du web de Nono40
SOURCES TESTS DELPHI WIN32 AUTOMATISMES DELPHI .NET QUICK-REPORT
Retour à l'accueil
13 - COPIE D'ECRAN DANS UN FICHIER JPEG

PRÉSENTATION : C'est un petit utilitaire qui permet de faire des copies d'écran directement en .JPG
ZIP : Téléchargez le zip APERÇUS :

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.


CODE :
Unit Unit1;

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.

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2003 Bruno Guérangé. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Responsables bénévoles de la rubrique Delphi : Gilles Vasseur - Alcatîz -