Announcement

Collapse
No announcement yet.

Wie bekommt man SHChangeNotify-Änderungen mit?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Wie bekommt man SHChangeNotify-Änderungen mit?

    Hallo,<br>

    mir ist da gerade mal wieder etwas aufgefallen.<br>
    Mit SHChangeNotify informiere ich das System, dass ich gerade etwas<br>
    am FileSystem geändert habe. Z. Bsp. eine Datei gelöscht.<br>
    Wie kann ich das nun selber auswerten - und zwar möglichst sofort?<br>
    Gibt es da eine Windows-Message?<br>
    Bsp.:<br>
    Ich habe in meinem Programm eine Dateiliste. Eine Datei, die in dieser<br>
    Liste ist, wird von außen gelöscht. Selbstverständlich soll sie dann auch<br>
    in meiner Liste gelöscht werden. Wie erfahre ich, dass die gelöscht wurde?<br>
    Das gleiche gilt für Verschieben oder Kopieren und auch für Verzeichnisse.<br>
    Hat jemand einen Tipp für mich?<br>

    Gruß<br>
    Matthias

  • #2
    Um zu erfahren, das sich am Dateisystem was geändert hat, kannst du mit "FindFirstChangeNotification" und Angabe eines Pfades überwachen, ob Änderungen vorgenommen worden sind (bzw. "FindNextChnageNotification"). Näheres findest du in der MSDN

    Comment


    • #3
      Hallo Roland,<br>

      nun ja, aber...<br>
      Wie gesagt, ich habe nur eine Liste von Dateien.<br>
      Insofern sind sie zwar natürlich Teil des Filesystems,<br>
      aber sie haben eben keine einheitliche "Eltern", sprich:<br>Sie stecken nicht im gleichen Veruzeichnis, nicht mal auf der selben Platte!<br>
      Ich dachte auch an "FindFirstChabgeNotification" usw., finde damit aber nicht den Einstieg.<br>

      Gruß<br>
      Matthia

      Comment


      • #4
        Hey Matthias

        dann kannste folgendes machen: Du suchst dir die Verzeichnisse zusammen, in denen die Dateien liegen und legst für jedes Verzeichnis eine FindFirstChangeNotification an. Ich habe das ganze in einem Delphi Objekt gekapselt, das als Thread läuft. Tritt dann eine Veränderung auf, wird eine Ereignisroutine aufgerufen, über die du dann überprüfen kannst, welche Datei sich geändert hat und diese gegebenenfalls aus der Liste rauszulöschen. Wenn du Interesse hast, gib deine E-Mail Adresse an und ich schicke dir die Komponente

        Comment


        • #5
          Hallo Roland,

          sofort!!! Das ist toll! Danke, danke, danke...
          Da hätte ich ja schön fummeln können!

          [email protected]

          Vielen Dank, noch mal
          Matthia

          Comment


          • #6
            *ichauchhabenwill*

            Könntest du mir das bitte auch schicken, ich habe nämlich ziemlich
            lange nacher einer möglichkeit gesucht das Filesystem zu
            überwachen aber nichts gefunden. Warscheinlich hab ich immer
            falsch gesucht

            [email protected]

            Comment


            • #7
              Du musst aber aufpassen. Funktioniert auf dem lokalen Dateisystem und auf Windows Netzwerken. Nicht jedoch auf Novell Netzwerken (die untertsützen das leider nicht

              Comment


              • #8
                Hallo Roland,

                dürfte ich auch bitte Deine Komponente
                haben, da ich mich (trotz .NET) in die API 'reinarbeiten will und für jedes Beispiel dankbar bin.

                Danke im Voraus!

                Grüsse Peter

                [email protected]

                Comment


                • #9
                  Originally posted by Roland Wind View Post
                  Hey Matthias

                  dann kannste folgendes machen: Du suchst dir die Verzeichnisse zusammen, in denen die Dateien liegen und legst für jedes Verzeichnis eine FindFirstChangeNotification an. Ich habe das ganze in einem Delphi Objekt gekapselt, das als Thread läuft. Tritt dann eine Veränderung auf, wird eine Ereignisroutine aufgerufen, über die du dann überprüfen kannst, welche Datei sich geändert hat und diese gegebenenfalls aus der Liste rauszulöschen. Wenn du Interesse hast, gib deine E-Mail Adresse an und ich schicke dir die Komponente
                  Hallo Roland,
                  würdest du mir die Komponente (den Code) auch zur Verfügung stellen?
                  Meine eMail-Adresse: [email protected]
                  Vielen Dank und Gruß
                  Elwood

                  Comment

                  Working...
                  X