Hallo Delphigemeinde.
ich habe ein tool geschrieben was alle 2000ms über ein Timer gesteuert Screenshots
von dem kompletten desktop macht und diese in eine Datei speichert. (diese wird immer wieder durch einen neuen Screenshot ersetzt)
Nun meine Frage:
Ist da performance mäßig noch was rauszuholen, denn es ruckelt schon alles wenn ein Screenshot gemacht wird.
Hier die Funktion (ähnlich CL)
Delphi-Quellcode:
procedure TMain.ScreenToFile(aFileName: string);
var
Bitmap: TBitmap;
JPG : TJPEGImage;
Canvas: TCanvas;
begin
Canvas := TCanvas.Create;
try
Canvas.Handle := GetWindowDC(0);
Application.ProcessMessages;
try
Bitmap := TBitmap.Create;
Application.ProcessMessages;
JPG := TJPEGImage.Create;
Bitmap.PixelFormat:=pf8bit;
Application.ProcessMessages;
try
Bitmap.Width := Screen.DesktopWidth;
Bitmap.Height:= Screen.DesktopHeight;
Bitmap.PixelFormat := pfDevice;
Application.ProcessMessages;
BitBlt(Bitmap.Canvas.Handle, 0, 0, Pred(Screen.DesktopWidth), Pred(
Screen.DesktopHeight), Canvas.Handle, Screen.DesktopLeft,
Screen.DesktopTop, Bitmap.Canvas.CopyMode);
Application.ProcessMessages;
JPG.CompressionQuality:=50;
JPG.Assign(Bitmap);
Application.ProcessMessages;
if fileexists(aFileName) then
deletefile(aFileName);
JPG.SaveToFile(aFileName);
finally
// resizepictur(aFileName,800,600);
Bitmap.Free;
JPG.Free;
end;
finally
ReleaseDC(0, Canvas.Handle);
Application.ProcessMessages;
end;
finally
Canvas.Free;
end;
end;
ob diese vielen Application.ProcessMessages; was bringen kA
wäre für jeden Tipp dankbar.
mfg
[edit=sakura] [code] mit [delphi] ausgetauscht. Mfg, sakura[/edit]