Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Directory Überwachung

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 < [ 3 ]
010
02.06.2003, 15:32 Uhr
~ai-tee
Gast


Hi leutz,


Zitat:

Hi!
Das geht mit
C++:

C++:
HANDLE FindFirstChangeNotification(LPCTSTR lpPathName, BOOL bWatchSubtree, DWORD, dwNotifyFilter)



FILE_NOTIFY_CHANGE_FILE_NAME benachrichtigt dich, wenn die Datei geändert, unbenannt, erstellt oder gelöscht wurde.

mfg mike



Kann ich mit der Funktion auch herausfinden, wie das File heisst, dass den Handle ausgelöst hat? Ich konnte da nichts finden ...

Grüsse, ai`tee
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
04.06.2003, 09:11 Uhr
ai-tee



Mein Problem besteht immernoch ... echt keiner ne Idee?
--
Greetz, ai`tee
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
04.06.2003, 09:25 Uhr
ai-tee



Achja und nochwas ...

als Rückgabewert kriege ich aus der Funktion: FindFirstChangeNotification
immer HexWerte wie z.B. 0x0000003C
Kann es sein, dass das nur die Angabe ist in welchem Speicherbereich der Rückgabewert steht? Kann ich mir irgendwie die Informationen die in dem Speicherbereich stehen ansehen?

Greetz ai`tee
--
Greetz, ai`tee
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
04.06.2003, 09:53 Uhr
ao

(Operator)


Da fällt mir nur die Brute-Force-Methode ein:

1. für jedes File im Directory ein eigenes ChangeNotification-Handle erzeugen (und merken, zu welchem File jedes Handle gehört)

2. WaitForMultipleObjects auf all diesen Handles machen.

3. Wenn ein Handle feuert, kannst du ihn über den Rückgabewert von WaitForMultipleObjects identifizieren, und ...

4. schwupp, hast du das zugehörige File.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
04.06.2003, 10:02 Uhr
ao

(Operator)



Zitat:
ai-tee postete
Achja und nochwas ...

als Rückgabewert kriege ich aus der Funktion: FindFirstChangeNotification
immer HexWerte wie z.B. 0x0000003C
Kann es sein, dass das nur die Angabe ist in welchem Speicherbereich der Rückgabewert steht? Kann ich mir irgendwie die Informationen die in dem Speicherbereich stehen ansehen?

Greetz ai`tee



Der Rückgabewert ist ein Handle, also so was wie eine Kenn-Nummer. Wenn Windows ein Systemobjekt (Thread, Event, ChangeNotification, ...) anlegt, gibt es dir nicht das Objekt selber in die Hand, sondern nur eine Nummer, unter der du es erreichen kannst.

Wie diese Zuordnung im Detail funktioniert, brauchst du nicht zu wissen.

Der Vorteil davon liegt auf der Hand: Alle Windows-Versionen haben an der Programmierschnittstelle nur diese Handles. Der interne Umgang damit kann in jeder Windows-Version anders sein, die Applikationsprogramme merken nichts davon.

ao

Dieser Post wurde am 04.06.2003 um 10:03 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
04.06.2003, 10:49 Uhr
ai-tee



Achso ... sehr gut, danke vielmals, weil mit Handels wusste ich auch nicht so wirklich was anzufangen ;)

Allerdings ist die Lösung nicht machbar.
Ich kann ja mal allgemein das Problem beschreiben:
Ich habe ein fast leeres Verzeichnis. Ausnahme ist die .Exe, die ich grade schreibe. Nun soll, sobald in das Verzeichnis eine Datei geschrieben wird, erkannt werden um welche Datei es sich handelt und falls es eine Datei mit der Endung .ps ist, soll sie entsprechend weiterverarbeitet werden.

Ich bin nun soweit, dass meine .Exe das Verzeichnis überwachen kann. Jedoch weiss ich nicht, wie ich den Dateinamen herausfinde, von der Datei die das Notify ausgelöst hat.

Ich suche nun also eine Möglichkeit den Dateinamen herauszufinden ... also noch einer ne Idee?
--
Greetz, ai`tee
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
04.06.2003, 10:59 Uhr
ao

(Operator)



Zitat:
ai-tee postete
Achso ... sehr gut, danke vielmals, weil mit Handels wusste ich auch nicht so wirklich was anzufangen

Ich bin nun soweit, dass meine .Exe das Verzeichnis überwachen kann. Jedoch weiss ich nicht, wie ich den Dateinamen herausfinde, von der Datei die das Notify ausgelöst hat.




Trivialer Vorher-Nachher-Vergleich?

1. Verzeichnisinhalt einlesen (FindFirstFile() / FindNextFile()) und alle Dateinamen speichern.
2. Auf ChangeNotification warten.
3. Verzeichnisinhalt erneut einlesen und mit den gespeicherten Daten vergleichen und Unterschied feststellen.

ao

Dieser Post wurde am 04.06.2003 um 11:00 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
04.06.2003, 12:58 Uhr
ai-tee



Darauf bin ich auch schon gekommen ... ich glaube wir reden aneinander vorbei ... die ganzen Funktionen können mir doch nicht den Dateinamen zurück geben ...

Folgender Auszug:

FindFirstFile
The FindFirstFile function searches a directory for a file whose name matches the specified filename. FindFirstFile examines subdirectory names as well as filenames.

Sprich:

Ich übergebe doch den Filename ... aber ich weiss ihn ja gerade nicht. Und wenn ich einfach Wildcards übergebe, kriege ich damit doch dennoch nicht den Dateinamen zurück, oder irre ich mich?

Ich habe zwar bemerkt, dass in der Struktur, die ich an FindFirstFile übergebe der Dateiname gespeichert ist, aber dann weiss ich nicht, wie ich das Anwenden soll, sorry :/
--
Greetz, ai`tee
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
04.06.2003, 13:18 Uhr
ai-tee



Öhm ... bitte nicht darauf antworten, ich war so hungrig, dass mein Kopf nicht mehr denken konnte *g*
--
Greetz, ai`tee
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
019
04.06.2003, 22:26 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
Hab dir ein Sample geschickt

mfg mike
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 < [ 3 ]     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: