Mit folgenden Funktionen kannst du prüfen, ob eine Datei im Zugriff von anderen Anwendungen ist:
Delphi-Quellcode:
function FileIsClosed(const filename:string):Boolean;
const
FILE_SHARE_EXCLUSIVE = 0;
var
hnd: THandle;
begin
hnd := CreateFile(PChar(filename), GENERIC_READ or GENERIC_WRITE, FILE_SHARE_EXCLUSIVE, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
result := hnd <> INVALID_HANDLE_VALUE;
CloseHandle(hnd);
end;
function CheckIfFileExistsAndIsReadable(const AFileName: string): boolean;
begin
Result := FileExists(AFileName) and FileIsClosed(AFileName);
end;
Ich würde aber trotzdem eine andere Vorgehensweise empfehlen:
bilde ein Liste der Dateien, für die ein Thumb erzeugt werden soll.
Die Liste wird abgearbeitet; bei Erfolg wird das Element aus der Liste gelöscht oder markiert,
bei Misserfolg eben nicht.
Nach Abarbeiten der Liste wird diese nochmals abgearbeitet, um die Misserfolge auszubügeln.