Über Google habe ich folgendes gefunden:
http://www.delphi-treff.de/tipps/dat...-in-benutzung/
Nun habe ich ein ganz simples Programm zum Testen geschrieben und je einmal unter XP und Windows 7 laufen lassen:
Delphi-Quellcode:
procedure TForm3.Timer1Timer(Sender: TObject);
begin
if IsFileInUse('datei.txt') then
Memo2.Lines.Add('in Benutzung')
else
Memo1.Lines.Add('frei');
end;
function TForm3.IsFileInUse(Path: string): boolean;
var
hFile: THandle;
begin
Result := False;
if not FileExists(Path) then Exit;
hFile := CreateFile(pchar(Path), GENERIC_READ or GENERIC_WRITE or GENERIC_EXECUTE,
0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
Result := hFile = INVALID_HANDLE_VALUE;
if not Result then CloseHandle(hFile);
end;
Es funktioniert unter XP einwandfrei, aber unter Windows 7 wird nie erkannt, dass die Datei benutzt wird.
Woran könnte das liegen?