FindFirstChangeNotification Problem



  • Habe folgenden Code:

    #include "stdafx.h"
    #include <windows.h>
    #include <iostream>
    
    using namespace std;
    
    int main(int argc, char* argv[])
    {
    	HANDLE dwChangeHandles[2];
    	DWORD dwWaitStatus;
    
    	//Ordner die überwacht werden sollen
    	dwChangeHandles[0] = FindFirstChangeNotification("C:\\test", FALSE, FILE_NOTIFY_CHANGE_FILE_NAME);
    
    	if (dwChangeHandles[0] == INVALID_HANDLE_VALUE)
    		ExitProcess(GetLastError());
    
    	while (TRUE)
    	{
    		dwWaitStatus = WaitForMultipleObjects(2, dwChangeHandles, FALSE, INFINITE);
    
    		switch (dwWaitStatus)
    		{
    		case WAIT_OBJECT_0:
    
    			if (FindNextChangeNotification(dwChangeHandles[0]) == FALSE)
    			{
    				ExitProcess(GetLastError());
    			}
    			break;
    		}
    	}
    	return 0;
    }
    

    Wieso erkennt das Programm nicht, wenn ich in den Ordner eine Datei kopiere oder wenn ich die Datei ändere? Muss ich da noch irgenwas hinzufügen?

    LG Andreas





  • Hab den Code von dort, der funktioniert aber nicht so richtig wie er soll, weis auch nicht wie die funktionen wie z.b RefreshDirectory() machen, kann mir da jemand vielleicht helfen?

    LG



  • Falls WaitForMultipleObjects zurückkehrt: welchen Wert liefert es und ggf. was liefert GetLastError?
    Füllst du auch noch irgendwo das 2. Element von dwChangeHandles? Falls du nur ein Verzeichnis hast kannst du auch gleich WaitForSingleObject nehmen.

    RefreshDirectory ist einfach eine Funktion, in der du z.B. ein List- oder Tree-View entsprechend aktualisieren kannst, sodass es dir Änderung anzeigt 😉



  • housefreak schrieb:

    Wieso erkennt das Programm nicht, wenn ich in den Ordner eine Datei kopiere oder wenn ich die Datei ändere?

    Woher weist du das? Ich sehe nämlich nicht, wo du bei Fund irgendetwas unternimmst, sodass du dies feststellen könntest 🙄


Anmelden zum Antworten