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
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
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.
comme vous allez le remarquer le code est exactement le même !!
Voici le code pour le service :
Avis-je commis d'erreurs ?? Est-ce un problème de gestion de mémoire !!
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.
Merci de vouloir m'aider.
Partager