Autor Beitrag
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Mi 26.02.03 17:09 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: 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
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 27.02.03 02:56 
Auf 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Do 27.02.03 08:50 
Hmmmm...schickt WIN keine MSGs, wenn Files gelöscht werden? Wär doch einfacher...

AXMD
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: 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 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
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: 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