Bonsoir/Bonjour à tous

Je commence dans la développement d'un petit outil qui permet de faire des capture écran en rafale chaque (s) secondes en utilisant un TTimer.

En tant que programme ça marche à merveille je mets même le code source à la disponibilité de ceux que ça intéresse
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 
unit frmsniper2;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls,jpeg;
 
type
  TForm1 = class(TForm)
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;
 
var
  Form1: TForm1;
 
implementation
 uses
   JclGraphics;
{$R *.dfm}
 
procedure TForm1.Timer1Timer(Sender: TObject);
var
   image1: TImage;
   B: TBitmap;
   JPEg1: TJPEGImage;
begin
   b := TBitmap.Create;
   jpeg1 := TJPEGImage.Create;
   Image1 := timage.Create(self);
   ScreenShot(B);
   image1.Picture.Bitmap.Assign(B);
   //Image1.Picture.Bitmap.SaveToFile('c:\sniper\images\' + FormatDateTime('ddmmhhnnss', now) + '.bmp');
   JPEg1.Assign(b);
   jpeg1.SaveToFile('c:\sniper\images\' + FormatDateTime('ddmmhhnnss', now) + '.jpg');
   image1.Free;
   jpeg1.Free;
   B.Free;
end;
 
end.
Mais en le transformant l'application en service et au lieu d'obtenir une image JPEG dans un fichier .jpg j'obtient seulement une image totalement blanche

comme vous allez le remarquer le code est exactement le même !!

Voici le code pour le service :

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
 
unit frmsniper;
 
interface
 
uses
   Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs,
   ExtCtrls, Forms, StdCtrls, ClipBrd, Buttons, JvExExtCtrls, JvImage, jpeg;
 
type
   TService1 = class(TService)
      Timer1: TTimer;
      procedure Timer1Timer(Sender: TObject);
   private
      { Déclarations privées }
   public
      function GetServiceController: TServiceController; override;
      { Déclarations publiques }
   end;
 
var
   Service1: TService1;
 
implementation
 
{$R *.DFM}
uses
   JclGraphics;
 
procedure ServiceController(CtrlCode: DWord); stdcall;
begin
   Service1.Controller(CtrlCode);
end;
 
function TService1.GetServiceController: TServiceController;
begin
   Result := ServiceController;
end;
 
procedure TService1.Timer1Timer(Sender: TObject);
var
   image1: TImage;
   B: TBitmap;
   JPEg1: TJPEGImage;
begin
   b := TBitmap.Create;
   jpeg1 := TJPEGImage.Create;
   Image1 := timage.Create(self);
   ScreenShot(B);
   image1.Picture.Bitmap.Assign(B);
   JPEg1.Assign(b);
   jpeg1.SaveToFile('c:\sniper\images\' + FormatDateTime('ddmmhhnnss', now) + '.jpg');
   image1.Free;
   jpeg1.Free;
   B.Free;
end;
 
end.
Avis-je commis d'erreurs ?? Est-ce un problème de gestion de mémoire !!

Merci de vouloir m'aider.