File wird berieits verwendet. -> WIN-API dazu?

Hallo Leute

Ich habe ein einfaches Textverarbeitungsprogramm in C++ geschrieben. Wenn nun ein Benutzer ein File (das File ist über das Netz verfügbar) am bearbeiten ist und ein zweiter Benutzer dieses File öffnet gibt es (natürlich) eine Fehlermeldung.
Nun will ich diese Fehlermeldung etwas besser gestalten. Ich möchte das in der Fehlermeldung steht wer das File zur Zeit am benutzen ist. Wie zum Beispiel: Benutzer „Hans“ benutzt das File „test.txt“. Soll dieser Benutzer benachrichtigt werden?.
Im Microsoft Word geht das auch.

Wie muss ich das machen. Da gibt es sicher eine Win-API dazu.

Weiss jemand etwas genaueres dazu?

Grüsse

Romano

Da gibt es sicher eine Win-API dazu.

Ich glaub kaum das Office das über die WinAPI löst.
Wenn du ein Dokument aufmachst, erstellt Word automatisch im selben Verzeichnis eine Datei die genau gleich heißt, aber die ersten beiden Buchstaben sind ~$. In dieser Status-Datei speichert es mit wer die Datei geöffnet hat und noch vieles andere. Es wird dann vor jedem öffnen abgefragt ob so eine Datei existiert.

Wie muss ich das machen.

als erstes setzt dies vorraus das du in dem Verzeichnis das Recht hast Dateien zu erstellen.

Dann mußt du dir für deine Statusdateien eine Konvention überlegen zB dem Dateienamen irgend eine Zeichenkette voranstelle oder so irgenwie.

Als nächstes mußt du jedesmal wenn ein Benutzer eine Datei öffnen will zuerst prüfen ob zu dieser Datie eine Statusdatei existiert:
wenn ja: auslesen wer sie angelgt hat und fehler ausgeben
wenn nein: statusdatei anlegen und eigenen namen reinschreiben, eigentliche Datei öffnen

soweit eine grobe Übersicht

mfg
Robert

Aha. Spitzen Idee!
Nur noch eine kleine Frage:
Weisst du auch glich noch wie ich an die User-Informationen (name) komme?

Vielen Dank.

Gruss

Romano

worst case fall: was mache ich wenn dem user der computer abstürzt und das ~$-File somit nicht mehr gelöscht werden kann?

Grüsse
Romano

Weisst du auch glich noch wie ich an die User-Informationen
(name) komme?

zB aus der registry, unter win98 zu finden im Key:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\CurrentUser

in C mit der MFC Klasse CRegKey auszulesen (genaueres siehe MSDN)

mfg
Robert

worst case fall: was mache ich wenn dem user der computer
abstürzt und das ~$-File somit nicht mehr gelöscht werden
kann?

tja, das stellt natürlich ein Problem dar.

Etweder du löscht es dann von Hand.

Oder du schreibst in das File mit wan der Benutzer es erstellt hat, und legst dann eine Zeit fest nach der es ungültig wird. Nach Ablauf dieser Zeit kann dan jeder Benutzer wieder auf das File zugreifen.
Es wäre dann auch möglich, dass die Anwendung mitzählt wie lange der Benutzer schon das File editiert, und falls er länger als die definiert Zeit arbeitet, die Zeit in der Statusdatei neu gesetzt wird. So könnte man verhindern, dass ein anderer Benutzer die Datei zu ändern beginnt, obwohl ein anderer Benutzer nur etwas länger braucht um seine Änderungen zu machen.

mfg
Robert

BOOL GetUserName(
LPTSTR lpBuffer, // address of name buffer
LPDWORD nSize // address of size of name buffer
);

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]