Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Оповещания в файловой системе 
:(
    Опции темы
Nastya2410
Дата 21.4.2014, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 19.4.2014

Репутация: нет
Всего: нет



Здравствуйте . Есть такая задача: Проанализировать подкаталоге в каталоге . При изменении имён каталогов вывести старые и новые их имена та время изменения имён. 

Пытаюсь это решить . Для начала анализирую подкаталоги в каталоге . Вот код:

Код

#include "stdafx.h"
#include <iostream>
#include <Windows.h>
#include <stdio.h>
using namespace std;
 
 
HANDLE hFind;
HANDLE hndl;
WIN32_FIND_DATA fd;
BOOL bRet = TRUE;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    //инициализация дескриптора оповещаний
    hndl = FindFirstChangeNotification ("C:\\test", TRUE ,FILE_NOTIFY_CHANGE_DIR_NAME);
    //если дескриптор не получен
    if(hndl==INVALID_HANDLE_VALUE)
    {cout<<"Invalid Handle"<<endl;
     int error=GetLastError();
     cout<<endl<<"error="<<error;
 
    }
    //ожидание оповещаний
    //если имя каталога изменено
   if(WaitForSingleObject (hndl,INFINITE) != WAIT_FAILED)
   {cout<<" Dir name changed!"<<endl;
 
   }
 
FindCloseChangeNotification (hndl);
 
 
    return 0;
} 



Не могу понять , как отследить старые и новые  имена подкаталогов ? какой функцией нужно пользоваться? Подскажите, пожалуйста .





Это сообщение отредактировал(а) Nastya2410 - 21.4.2014, 18:44
PM MAIL   Вверх
feodorv
Дата 22.4.2014, 01:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 11
Всего: 45



Цитата(Nastya2410 @  21.4.2014,  19:41 Найти цитируемый пост)
Есть такая задача

Интересно, откуда возникла такая задача...


Цитата(Nastya2410 @  21.4.2014,  19:41 Найти цитируемый пост)
Не могу понять , как отследить старые и новые  имена подкаталогов ?

FindFirstChangeNotification лишь уведомляет об изменениях, но не сообщает о том, какие именно изменения произошли. Более продвинутая функция ReadDirectoryChangesW даёт пользователю больше информации, но что-то я сомневаюсь, что она сообщает и старое имя каталога, и новое имя. (Так же нужно учесть, что при частых изменениях, происходящих в каталоге, функция ReadDirectoryChangesW может терять произошедшие изменения).


Нужно искать какое-то другое решение...


Цитата(Nastya2410 @  21.4.2014,  19:41 Найти цитируемый пост)
   if(WaitForSingleObject (hndl,INFINITE) != WAIT_FAILED)
   {cout<<" Dir name changed!"<<endl;
 
   }

А где цикл и FindNextChangeNotification?

Добавлено через 12 минут и 41 секунду
Цитата(feodorv @  22.4.2014,  02:38 Найти цитируемый пост)
но что-то я сомневаюсь, что она сообщает и старое имя каталога, и новое имя

Хотя здесь (основано на ReadDirectoryChangesW) на скриншоте есть и старое имя, и новое  smile 


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0882 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.