Entwickler-Ecke

Dateizugriff - Datei gelöscht


AXMD - Mi 26.02.03 17:09
Titel: Datei gelöscht
Hi,

ich suche für eine Art System-Dienstprogramm eine Funktion, die mich benachrichtigt, wenn eine Datei gelöscht wurde. Ich will nicht smit dem File tun - ich will nur wissen, wie der Pfad lautet - mehr nicht!
Ich glaube mich zu erinnern, dass es dazu eine Message gibt...

Wäre super, wenn mir jemand den Code (zumindest ansatzweise) schicken könnte,
AXMD


CenBells - Do 27.02.03 01:43

moin, ich habe sowas mal mit nem thread gemacht, der ein komplettes Verzeichnis auf dateiveränderungen überwacht. Wie genau der befehl jetzt lautet, weiß ich nicht mehr, such aber mal in der Win32 Api.

Gruß
Ken


Delete - Do 27.02.03 02:56

Auf http://www.sysinternals.com/ gibt es einen FileMonitor mit Source, glaube ich. Allerdings haben die das mit einem Treiber gelöst. Und ich denke mal eine andere Möglichkleit wird es wohl nicht geben. Und damit fällt Delphi als Entwicklungsumgebung schon mal flach.


AXMD - Do 27.02.03 08:50

Hmmmm...schickt WIN keine MSGs, wenn Files gelöscht werden? Wär doch einfacher...

AXMD


Delete - Do 27.02.03 14:56

Es wäre auch einfacher, wenn du im Delphi-Editor einfach nur "mach mal" eintippen würdest. Manche Dinge erfordern eben etwas Gehirnschmalz und Arbeit. :roll:

Und warum sollte Windows eine Message schicken und an wen? Als Broadcast durch das ganze System?


AXMD - Do 27.02.03 15:23

Zitat:
Als Broadcast durch das ganze System?


Ja genau ;) wieso nicht? Windows macht viel....Sch#####

AXMD

PS.: Was macht einfach ShellChangeNotifier in D6? Wenn ich den in mein Proggy einbinde, macht der OnChange gar nix...


MSCH - Do 27.02.03 20:29
Titel: Hi
Sorry, aber für sowas braucht man keinen Treiber oder sonst irgentwas nur einen TShellChangeNotifier.
Einfach das zu überwachene Verzeichnis in TS.Root eingeben, die notwendigen Filter im Objektinspektor auswählen und das Ereignis Onchange() definieren.
Verry Simple.
Im Onchange() Verzeichnis könntest du dann via FindFirst/FindNext die entsprechenden Dateioperationen indirekt auswerten. (Dateigröße, neue Datei u.s.w).

ODER
du holst dir die Orpheus-Komponenten (mittlerweise Gratis im Netz unter http://www.sourceForge.net) die haben einen etwas aufgebohrten Notifier im Angebot, den man auch mal deaktivieren kann.

Vorsicht: Dein code muss Thread-Sicher sein.
Grüße
MSCH


Delete - Do 27.02.03 20:34

Was ist ein TShellChangeNotifier? Eine Kompo? dann wird sie das auchmit einem Treiber machen und die Kompo dient nur dazu den Treiber anzusprechen.


MSCH - Do 27.02.03 20:54
Titel: Re
Ein TShellChangeNotfier ist eine Simple Komponente (ich hab hier D6 Enterprise) auf dem Register Beispiele.

Was und wen und wie die Funktioniert ist mir so ziemlich wurscht. Allerdings spricht sie keinen Treiber an, sondern geht irgentwann auf die Function FindFirstChangeNotification() Nettes WinAPI über.

Zitat:
Auszug : The FindFirstChangeNotification function creates a change notification handle and sets up initial change notification filter conditions. A wait on a notification handle succeeds when a change matching the filter conditions occurs in the specified directory or subtree.


Unter W31 konnte man das auch schon machen, da wars ein System-Hook und sch**-schwer zu programmieren (turbopascal f Windows).
mfg
MSCH