Vor 5 Jahren habe ich für Screenshots das gleiche Problem gehabt und so gelöst:
Die
Funktion GetNextFreeFileName ist selbsterklärend.
Die Procedure ist nur beispielhaft.
Das Ergebnis ist dann: 001.bmp, 002.bmp, 003.bmp ...
Delphi-Quellcode:
function GetNextFreeFileName(const FileName: string;
const sFormat: string = '%.3d'): string;
var i: integer;
sPath, sExt: string;
begin
sPath := IncludeTrailingBackslash(ExtractFilePath(FileName));
sExt := ExtractFileExt(FileName);
i := 0;
repeat
inc(i);
Result := sPath + Format(sFormat,[i]) + sExt;
until not FileExists(Result);
end;
procedure TForm1.ButtonClick(Sender: TObject);
var B : TBitmap;
begin
Image2.Picture.Bitmap := NIL;
Application.ProcessMessages;
B := TBitmap.Create;
try
GetScreenShot(B);
Image2.Picture.Assign(B);
B.SaveToFile(GetNextFreeFileName(ExtractFilePath(Application.ExeName) + '001.bmp'));
finally
B.Free; //B.Destroy;
end;
end;