Einzelnen Beitrag anzeigen

gkoeder

Registriert seit: 15. Jun 2004
84 Beiträge
 
Delphi 2010 Professional
 
#1

Prüfen, ob eine Datei geöffnet werden kann

  Alt 18. Okt 2004, 13:53
Hallo,

hab' eine eigendlich recht einfache Frage: Wie kann man prüfen, ob eine Datei zum lesen geöffnet werden kann (z.B. also von keinem anderen Programm gerade geöffnet ist)?
Ich hab's bisher mit folgender Funktion probiert, allerdings wird z.B. ein gerade geöffnetes Excel-File problemlos durchgereicht (was dann später zu nem I/O Error 32 führt):

Delphi-Quellcode:
function CanOpenFile(const aName: string; var ReadOnly: Boolean): Boolean;
var
  HFileRes: hFILE;
  fStream: tFileStream;
begin
  Result := False;
  ReadOnly := True;
  HFileRes := 0;
  if FileExists(aName) = True
  then
    begin
      try
        fStream := TFileStream.Create(aName, fmOpenRead OR fmShareDenyNone);
        try
          Result := true;
          Try
            HFileRes := CreateFile(pchar(aName), GENERIC_READ or GENERIC_WRITE, 0 , nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
            ReadOnly := (HFileRes = INVALID_HANDLE_VALUE);
          Finally
            If HFileRes <> 0 then CloseHandle(HFileRes);
          End;
        finally
          fStream.Free;
        end;
      except
        Result := false;
      end;
    end;
end;
Thanks,
Gerald
  Mit Zitat antworten Zitat