![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
-Sman- |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 27.11.2003 Репутация: нет Всего: нет |
Здравствуйте!
Вот такая вот задачка есть - на машину сбрасывается файл (по сети или ftp), необходимо написать программку которая висела бы и отлавливала появление этого файла в конкретной папке.. Подскажите пожалуйста, что делать? В какую сторону рыть-то? Есть мнение - что смотреть надо в сторону хуков..Вот еще хотелось бы узнать как с ними работать в этом направлении ![]() Пасиб заранее.. ![]() |
|||
|
||||
Abrek |
|
|||
Unregistered |
Если директория фиксирована, то можно сделать таимер и на его события опрашивать FileExists
|
|||
|
||||
Mephisto |
|
|||
![]() Волкъ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1818 Регистрация: 27.8.2003 Где: Питер Репутация: нет Всего: 34 |
Если оперативу не жалко! |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
апи-хук поставить на WinAPI'шный CreateFile, его все юзают...
-------------------- ![]() |
|||
|
||||
Royan |
|
|||
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: нет Всего: 15 |
Если твоя машина стоит на винде (>2000) можно воспользоваться аудитом, пойди на msdn, и набери в поиске что-то вроде About Authorization, Access Control, Audit Generation. Наверняка вывалится то что нужно.
-------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 2 Всего: 112 |
-Sman-, делал я такую вещь, правда на Delphi. В Cи не особо, так что извиняй, если что не так напишу...
Принцип простой (но надо 2k/XP...): 1. Открываешь директорию для просмотра: hDir = CreateFile("C:\\1", FILE_LIST_DIRECTORY, FILE_SHARE_READ | FILE_SHARE_DELETE, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL); 2. Создаешь событие для прослеживания изменений директории: hNotify = FindFirstChangeNotification("c:\\1", FALSE, FILE_NOTIFY_CHANGE_FILE_NAME); 3. Цикл отслеживания: 3.1 Ожидаешь событие изменения: WaitForSingleObject(hNotify, INFINITE); 3.2 Получаешь список изменений в директории: ReadDirectoryChangesW(hDir, Buf, BufSize, FALSE, FILE_NOTIFY_CHANGE_FILE_NAME, &Returned, NULL, NULL); 3.3 В Buf теперь список структур FILE_NOTIFY_INFORMATION, их просматриваешь, и если поле Action == FILE_ACTION_ADDED, то добавили файл, его имя в поле FileName. 3.4 Ожидаешь следующее изменение: FindNextChangeNotification(hNotify); -> 3.1 4. FindCloseChangeNotification(hNotify); 5. CloseHandle(hDir); PS: Можно обойтись и без FindFirstChangeNotification/FindNextChangeNotification, просто время от времения делая ReadDirectoryChangesW, но это будет менее экономично в смысле процессорного времени... -------------------- С уважением, г-н Посол. |
|||
|
||||
p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 2 Всего: 112 |
Не слушай меня
![]() Я как всегда всё усложнил ![]() -------------------- С уважением, г-н Посол. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |