Erkennen ob mehrere Dateien verschoben wurden
-
Ich erkenne mit meinem Programm über FILE_CHANGE_NOTIFICATION ob in einem Odner Dateien verschoben wurden, jetzt hab ich nur ein Problem, dass das nur funktioniert wenn eine Datei verschoben wird wenn ich jetzt mehrere gleichzeitig verschiebe wird immer nur eine Datei erkannt? Wie merke ich das oich mehrere Dateien verschiebe?
Hier mal der Code mit der Erkennung:
while (ReadDirectoryChangesW(hDir, &Buffer, sizeof(Buffer), TRUE, FILE_NOTIFY_CHANGE_SECURITY | FILE_NOTIFY_CHANGE_CREATION | FILE_NOTIFY_CHANGE_LAST_ACCESS | FILE_NOTIFY_CHANGE_LAST_WRITE | FILE_NOTIFY_CHANGE_SIZE | FILE_NOTIFY_CHANGE_ATTRIBUTES | FILE_NOTIFY_CHANGE_DIR_NAME | FILE_NOTIFY_CHANGE_FILE_NAME, &BytesReturned, NULL, NULL)) { CString filename = ""; CString t_filename = ""; switch (Buffer[0].Action) { case FILE_ACTION_ADDED: filename = CString(Buffer[i].FileName).Left(Buffer[i].FileNameLength /2); AfxMessageBox(filename); filename = str + "\\" + filename; printf("Datei hinzugefuegt oder geloescht\n"); t_filename = filename; t_filename.Delete(filename.GetLength() - 3, 3); //Kopie der Datei erstellen im selben Ordner die die richtigen Securityeisntellungen hat CopyFile(filename, t_filename, FALSE); //Original löschen DeleteFile(filename); //Kopie in Original umbenennen CopyFile(t_filename, filename, FALSE); //Kopie löschen DeleteFile(t_filename); break;Hoffe mir kann jemand helfen
-
So richtig helfen kann ich Dir da nicht. Ich stand nämlich auch mal vor diesem Problem, das ich meisst nur eine bis 3 datein mitbekommen habe, die ich beispielsweise in den Ordner kopiert hatte.
Irgendwie verlieren sich die Informationen. Ich selbst hab damals probiert das ganze mit threads und semaphoren zu lösen, aber als Programmiernuub ist das nicht so easy für mich gewesen.
Wenn es DIr hilft ist hier ein beispiel von "codeguru"
http://www.codeguru.com/Cpp/W-P/files/article.php/c4467/bei ihm scheint das zu funktionieren