Advertisement
Guest User

Untitled

a guest
Jul 19th, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.84 KB | None | 0 0
  1. int checkForChanges(string dir) {
  2.     DWORD status;
  3.     HANDLE ChangeHandles[3]; // Массив с хэндлами, которые отлавливаем.
  4.    
  5.     ChangeHandles[0] = FindFirstChangeNotification(dir.c_str(), TRUE, FILE_NOTIFY_CHANGE_FILE_NAME); // Создание/удаление/переименование
  6.     if (ChangeHandles[0] == INVALID_HANDLE_VALUE) {
  7.         cout << "Error: FindFirstChangeNotification function failed.";
  8.         ExitProcess(GetLastError());
  9.     }
  10.  
  11.     ChangeHandles[1] = FindFirstChangeNotification(dir.c_str(), TRUE, FILE_NOTIFY_CHANGE_LAST_WRITE); // Изменение (запись в файл, прочее)
  12.     if (ChangeHandles[1] == INVALID_HANDLE_VALUE) {
  13.         cout << "Error: FindFirstChangeNotification function failed.";
  14.         ExitProcess(GetLastError());
  15.     }
  16.  
  17.     ChangeHandles[2] = FindFirstChangeNotification(dir.c_str(), TRUE, FILE_NOTIFY_CHANGE_DIR_NAME); // Создание папок в данной папке
  18.     if (ChangeHandles[2] == INVALID_HANDLE_VALUE) {
  19.         cout << "Error: FindFirstChangeNotification function failed.";
  20.         ExitProcess(GetLastError());
  21.     }
  22.  
  23.     while (true)
  24.     {
  25.         status = WaitForMultipleObjects(3, ChangeHandles, FALSE, 60000);
  26.         switch (status)
  27.         {
  28.         case WAIT_OBJECT_0: // Файл был создан/удален/переименован
  29.             cout << "файл был создан/удален/переименован";
  30.             break;
  31.         case WAIT_OBJECT_0 + 1: // Что-то записали в файл
  32.             cout << "Что-то записали в файл";
  33.             break;
  34.         case WAIT_OBJECT_0 + 2: // Создали подпапку
  35.             cout << "Создали подпапку";
  36.             break;
  37.         case WAIT_TIMEOUT: // Если за время не произошло изменений
  38.             cout << ("Не произошло никаких изменений за последние 60 секунд.");
  39.             break;
  40.         }
  41.     }
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement