Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int checkForChanges(string dir) {
- DWORD status;
- HANDLE ChangeHandles[3]; // Массив с хэндлами, которые отлавливаем.
- ChangeHandles[0] = FindFirstChangeNotification(dir.c_str(), TRUE, FILE_NOTIFY_CHANGE_FILE_NAME); // Создание/удаление/переименование
- if (ChangeHandles[0] == INVALID_HANDLE_VALUE) {
- cout << "Error: FindFirstChangeNotification function failed.";
- ExitProcess(GetLastError());
- }
- ChangeHandles[1] = FindFirstChangeNotification(dir.c_str(), TRUE, FILE_NOTIFY_CHANGE_LAST_WRITE); // Изменение (запись в файл, прочее)
- if (ChangeHandles[1] == INVALID_HANDLE_VALUE) {
- cout << "Error: FindFirstChangeNotification function failed.";
- ExitProcess(GetLastError());
- }
- ChangeHandles[2] = FindFirstChangeNotification(dir.c_str(), TRUE, FILE_NOTIFY_CHANGE_DIR_NAME); // Создание папок в данной папке
- if (ChangeHandles[2] == INVALID_HANDLE_VALUE) {
- cout << "Error: FindFirstChangeNotification function failed.";
- ExitProcess(GetLastError());
- }
- while (true)
- {
- status = WaitForMultipleObjects(3, ChangeHandles, FALSE, 60000);
- switch (status)
- {
- case WAIT_OBJECT_0: // Файл был создан/удален/переименован
- cout << "файл был создан/удален/переименован";
- break;
- case WAIT_OBJECT_0 + 1: // Что-то записали в файл
- cout << "Что-то записали в файл";
- break;
- case WAIT_OBJECT_0 + 2: // Создали подпапку
- cout << "Создали подпапку";
- break;
- case WAIT_TIMEOUT: // Если за время не произошло изменений
- cout << ("Не произошло никаких изменений за последние 60 секунд.");
- break;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement