Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проверка наличия файла или каталога

5.2K
23 июня 2004 года
Dimitry
26 / / 11.06.2004
Есть ли способ перехватывать событие появления определенного файла или каталога (не считая проверки с помочью таймера и функции dir, тоесть проверки существования файла через определенный промежуток времени)
258
23 июня 2004 года
SergeySV
1.5K / / 19.03.2003
Недавно случайно наткнулся на топик по этой теме на RSDN, ща попробую найти
5.2K
23 июня 2004 года
Dimitry
26 / / 11.06.2004
Цитата:
Originally posted by SergeySV
Недавно случайно наткнулся на топик по этой теме на RSDN, ща попробую найти



а дай ссылку.... может я тоже там че интересного найду

258
23 июня 2004 года
SergeySV
1.5K / / 19.03.2003
Через FindFirstChangeNotification() или
через функцию ReadDirectoryChangesW(только с NT 4.0, в 98 нет)
Код:
Пример из API-Guide

Private Const FILE_NOTIFY_CHANGE_ATTRIBUTES = &H4
Private Const FILE_NOTIFY_CHANGE_DIR_NAME = &H2
Private Const FILE_NOTIFY_CHANGE_FILE_NAME = &H1
Private Const FILE_NOTIFY_CHANGE_SIZE = &H8
Private Const FILE_NOTIFY_CHANGE_LAST_WRITE = &H10
Private Const FILE_NOTIFY_CHANGE_SECURITY = &H100
Private Const FILE_NOTIFY_CHANGE_ALL = &H4 Or &H2 Or &H1 Or &H8 Or &H10 Or &H100
Private Declare Function FindFirstChangeNotification Lib "kernel32" Alias "FindFirstChangeNotificationA" (ByVal lpPathName As String, ByVal bWatchSubtree As Long, ByVal dwNotifyFilter As Long) As Long
Private Declare Function FindCloseChangeNotification Lib "kernel32" (ByVal hChangeHandle As Long) As Long
Private Declare Function FindNextChangeNotification Lib "kernel32" (ByVal hChangeHandle As Long) As Long
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function ResetEvent Lib "kernel32" (ByVal hEvent As Long) As Long

Private Sub Form_Load()
    Dim Ret As Long
    'Set the notification hook
    Ret = FindFirstChangeNotification("C:\", &HFFFFFFFF, FILE_NOTIFY_CHANGE_ALL)
    'Wait until the event is triggered
    WaitForSingleObject Ret, &HFFFFFFFF
    MsgBox "Event Triggered for the first time"
    'Reactivate our hook
    FindNextChangeNotification Ret
    'Wait until the event is triggered
    WaitForSingleObject Ret, &HFFFFFFFF
    MsgBox "Event Triggered for the second time"
    'Remove our hook
    FindCloseChangeNotification Ret
End Sub


правда как пишут люди, не всегда это тояно работает: в win98 с сетевыми дисками это не проходит - глюк там и с win2000 при большом кол-ве копируемых файлов, получаешь иногда меньшее кол-во сообщений. Даже мелкомягкие это признают http://support.microsoft.com/default.aspx?scid=kb;en-us;245214
5.2K
23 июня 2004 года
Dimitry
26 / / 11.06.2004
Цитата:
Originally posted by SergeySV

правда как пишут люди, не всегда это тояно работает: в win98 с сетевыми дисками это не проходит - глюк там и с win2000 при большом кол-ве копируемых файлов, получаешь иногда меньшее кол-во сообщений. Даже мелкомягкие это признают http://support.microsoft.com/default.aspx?scid=kb;en-us;245214



Спасиба....попробую.....результат сообщу

258
23 июня 2004 года
SergeySV
1.5K / / 19.03.2003
Тебе нужны первые шесть топиков:
http://www.rsdn.ru/search/?q=%EE%F2%F1%EB%E5%E6%E8%E2%E0%ED%E8%E5+%EF%EE%FF%E2%EB%E5%ED%E8%FF+%F4%E0%E9%EB%E0&mode=rank&group=N
5.2K
23 июня 2004 года
Dimitry
26 / / 11.06.2004
Что-то в W2k не хочет работать с сетевыми дисками
это так задумано или я что-то напартачил ???
258
23 июня 2004 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by Dimitry
Что-то в W2k не хочет работать с сетевыми дисками
это так задумано или я что-то напартачил ???



FindFirstChangeNotification? может и в win2000 эту проблему с глюком тоже не решили

попробуй ReadDirectoryChangesW раз у тебя win2000, правда у меня нет примеров под нее

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог