Capture d'écran via un Service Delphi
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 :mrgreen:
Code:
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 :aie:
comme vous allez le remarquer le code est exactement le même !! :oops:
Voici le code pour le service :
Code:
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 !! :arf:
Merci de vouloir m'aider.:help: