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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как можно засечь изменение файла в папке? 
:(
    Опции темы
cardinal
Дата 22.11.2004, 16:13 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



Код
'Это в модуль
Public Declare Function FindFirstChangeNotification Lib "kernel32" Alias "FindFirstChangeNotificationA" (ByVal lpPathName As String, ByVal bWatchSubtree As Long, ByVal dwNotifyFilter As Long) As Long
Public Declare Function FindNextChangeNotification Lib "kernel32" (ByVal hChangeHandle As Long) As Long
Public Declare Function FindCloseChangeNotification Lib "kernel32" (ByVal hChangeHandle As Long) As Long

Public Const FILE_NOTIFY_CHANGE_SIZE = &H8

Public Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long

Public Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long

Dim hN As Long

Sub WaitForFileChange(ByVal As Long)
 hN = FindFirstChangeNotification("c:\Folder1", 0, FILE_NOTIFY_CHANGE_SIZE)
 Do
  WaitForSingleObject hN, -1
  MessageBox 0, "Размер какого-то файла в папке ''C:\Folder1\'' изменился!", "Hello", 0
  FindNextChangeNotification hN
 Loop
End Sub

Функция WaitForFileChange вызывается в отдельном потоке. Разумеется для работы самих ф-ий Find...ChangeNotification это не обязательно, просто для конкретно моей реализации я запустил бесконечный цикл проверки в отдельном потоке. Таким образом я могу реагировать на событие изменение размера какого-то файла в папке. Замечу, что событие привязано не к файлу, а ко всей директории, но это не проблема. Можно реализовать проверку на то, изменился ли размер нужного мне файла, или нет. Если не изменился, ждать следущих изменений в папке. 
Константы
Код
Public Const FILE_NOTIFY_CHANGE_ATTRIBUTES = &H4
Public Const FILE_NOTIFY_CHANGE_DIR_NAME = &H2
Public Const FILE_NOTIFY_CHANGE_FILE_NAME = &H1
Public Const FILE_NOTIFY_CHANGE_LAST_WRITE = &H10
Public Const FILE_NOTIFY_CHANGE_SECURITY = &H100

позволяют отслеживать другие события. Вот так то! smile 


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


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

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


 




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


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

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