Entwickler-Ecke

Dateizugriff - prüfen ob Datei geöffnet ist


Bronstein - Do 02.03.06 14:05
Titel: prüfen ob Datei geöffnet ist
Wie kann ich Prüfen ob eine Datei geöffnet ist. Habe zwar schon eine Funktion gefunden diese funktioniert aber nicht.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
function IsFileOpen(const fName: TFileName): Boolean;
var 
  HFileRes: HFILE; 
begin 
  Result := False; 
  HFileRes := CreateFile(PChar(fName),
                         GENERIC_READ or GENERIC_WRITE,
                         0,
                         nil,
                         OPEN_EXISTING, 
                         FILE_ATTRIBUTE_NORMAL, 
                         0); 
  Result := (HFileRes = INVALID_HANDLE_VALUE); 
  if not Result then
    Application.MessageBox('offen''Ende', MB_OK)
  else
    Application.MessageBox('geschlossen''Ende', MB_OK);
end;


Egal ob die Datei offen ist oder nicht, es kommt immer die Meldung offen. Ich öffne die txt-Datei von Hand. Und dann möchte ich die Meldung, dass die Datei offen ist.

Moderiert von user profile iconraziel: Delphi-Tags hinzugefügt
Moderiert von user profile iconraziel: Topic aus VCL (Visual Component Library) verschoben am Do 02.03.2006 um 14:12


BenBE - Do 02.03.06 14:10

Du musst bei den SHARING-Optionen zusätzlich festlegen SHARE_DENY_READ und SHARE_DENY_WRITE. Weiterhin ist zu beachten: Notepad öffnet eine Datei nur während eines Zugriffs beim Öffnen oder Speichern. In der Zeit dazwischen ist die Datei geschlossen.

Probier das doch einfach mal mit der EXE-Datei deines Programmes.