Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 11.08.2010
Сообщений: 50
1

Мониторинг

23.01.2011, 00:00. Показов 1271. Ответов 5
Метки нет (Все метки)

Здравствуйте.
Подскажите, каким способом можно осуществить мониторинг папки на предмет изменений в ней (например, создание, удаление, переименование и т.д.) и выводом этой информации в какое-то поле.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.01.2011, 00:00
Ответы с готовыми решениями:

мониторинг кэша
существует некий operayting system cache располагается он в оперативной памяти в него заносится...

мониторинг файлов
Добрый вечер! В моей программе есть три ричедита, в которые загружаются различные файлы. Как мне...

Мониторинг сети
Здравствуйте! Имеется база данных с сведениями об оборудовании (в частности ip адреса).Нужно...

Мониторинг системного трея
Приветствую. У меня необычная задача. Есть приложение, которое при отключении инета меняет свою...

5
Retired
7721 / 2553 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
23.01.2011, 10:11 2
Неясно для каких целей тебе всё это надо, поэтому скажу просто смотри в сторону FindFirstChangeNotification().
1
0 / 0 / 0
Регистрация: 11.08.2010
Сообщений: 50
23.01.2011, 13:06  [ТС] 3
Цитата Сообщение от Inadequate Посмотреть сообщение
Неясно для каких целей тебе всё это надо
Курсовая по программированию.

А за подсказку спасибо, разбираюсь с функцией

Добавлено через 55 минут
Нашел немного примеров, вот один из них
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
HANDLE hd;
        hd = FindFirstChangeNotification("e:\\Download\\", TRUE, FILE_NOTIFY_CHANGE_FILE_NAME);
        if (hd == INVALID_HANDLE_VALUE){
                ShowMessage("Не могу следить за каталогом");
                return;
        }
       do{
                if(WaitForSingleObject(hd,INFINITE)==WAIT_OBJECT_0)
                      ShowMessage("Произошло изменение");
                if(!FindCloseChangeNotification(hd)){break;}
       }
        while(!Application->Terminated);
     FindCloseChangeNotification(hd);
но при запуске они все зависают, в чем причина?
0
Now I Matrix
136 / 133 / 28
Регистрация: 01.03.2010
Сообщений: 223
23.01.2011, 16:21 4
Занимался я раньше написанием программ защиты, ну и вот переделал я твой код в правильный:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
DWORD WINAPI ChangeNotyfic(LPVOID)
{
HANDLE hd;
hd = FindFirstChangeNotification("C:\\", TRUE, FILE_NOTIFY_CHANGE_FILE_NAME);
if (hd == INVALID_HANDLE_VALUE){ShowMessage("Не могу следить за каталогом");return 0;}
do
{
if(WaitForSingleObject(hd,INFINITE)==WAIT_OBJECT_0)
ShowMessage("Произошло изменение");
}
while(FindNextChangeNotification(hd));
FindCloseChangeNotification(hd);
return 1;
}
//на кнопку или куда либо
DWORD a;HWND b=CreateThread(NULL,0,ChangeNotyfic,0,0,&a);
//для завершения слежки, нужно завершить поток:
TerminateThread(b,0);
думаю разберёшься зачем я создаю новый поток =)
и долго ржал когда увидел это:
C++
1
2
3
                if(!FindCloseChangeNotification(hd)){break;}
       }
        while(!Application->Terminated);
тебе функция передаёт так нужный тебе Handle, а ты его закрываешь =)
1
0 / 0 / 0
Регистрация: 11.08.2010
Сообщений: 50
23.01.2011, 19:07  [ТС] 5
А как сделать, чтоб программа проверяла не только FILE_NOTIFY_CHANGE_FILE_NAME а к примеру и FILE_NOTIFY_CHANGE_DIR_NAME.
И еще почему
Цитата Сообщение от Matrica Посмотреть сообщение
TerminateThread(b,0);
выдает ошибку [C++ Error] Unit1.cpp(42): E2451 Undefined symbol 'b' ведь это вроде обьявление

Цитата Сообщение от Matrica Посмотреть сообщение
DWORD a;HWND b=CreateThread(NULL,0,ChangeNotyfic,0,0,&a);
0
Now I Matrix
136 / 133 / 28
Регистрация: 01.03.2010
Сообщений: 223
24.01.2011, 09:49 6
C++
1
HWND b
Переведите, [C++ Error] Unit1.cpp(42): E2451 Undefined symbol 'b' - Не найден символ 'b', то есть он не объявлен!
нужно объявить глобально!

А как сделать, чтоб программа проверяла не только FILE_NOTIFY_CHANGE_FILE_NAME а к примеру и FILE_NOTIFY_CHANGE_DIR_NAME.
Исправьте в моём коде:
C++
1
2
3
hd = FindFirstChangeNotification("C:\\", TRUE, FILE_NOTIFY_CHANGE_FILE_NAME); //это
//на это:
hd = FindFirstChangeNotification("C:\\", TRUE, FILE_NOTIFY_CHANGE_FILE_NAME|FILE_NOTIFY_CHANGE_DIR_NAME);
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.01.2011, 09:49

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Мониторинг загрузки процессора
всем доброго времени суток! меня интересует такой вопросик ... как программно в какой нибудь...

Мониторинг дискового пространства
Доброго времени суток! Подскажите, как можно реализовать в Builder C++, следующее: Проверка...

Мониторинг сайта. CppWebBrowser1->Refresh()
в общем сделал прогу для мониторинга оъявлений на авито с помощью CppWebBrowser Нужно сделать...

Мониторинг папки и печать в файл.
Здравствуйте. Суть вопроса такова: Программа мониторит определенную папку и по появлению...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.