Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.04.19;
Скачать: CL | DM;

Вниз

Доступ к файлу   Найти похожие ветки 

 
mahab ©   (2009-03-03 18:43) [0]

Привет. "Запил" такой:Отслеживаю изменения в каталогах используя ф-ю ReadDirectoryChangesW с фильтром FILE_NOTIFY_CHANGE_LAST_WRITE, т.к. по идее это сообщение появится после того, как программа, которая записывает в него закроет его (по крайней мере в статье Александра Панова  - Изучение простейших приемов работы с файлами и потоками на примере программы «Монитор каталогов» написано, что FILE_NOTIFY_CHANGE_SIZE сигнализирует об изменении размеров файлов. Операционная система определяет, что размер файла изменился, только если он закрыт.) Но к моему великому сожалению, получить доступ к этому файлу после получения сообщения у меня не получается - IDE говорит: "ОН ЗАНЯТ ДРУЖЕ!".
Если я не прав, пожалуйста скажите в чем. Я решил пойти по др. пути и дождаться пока сторонняя программа не освободит его. Но хочу сделать это с помощью WaitForSingleObject, но не знаю какой объект взять сигнальным и вообще возможно ли это. Иммитирую запись файла Paintом но какая программа будет записывать файлы в будующем не знаю, поэтому передать её хендл не могу.


 
Rouse_ ©   (2009-03-03 20:41) [1]


> написано, что FILE_NOTIFY_CHANGE_SIZE сигнализирует об изменении
> размеров файлов. Операционная система определяет, что размер
> файла изменился, только если он закрыт

MSDN думает о данном флаге иначе :)

Any file-size change in the watched directory or subtree causes a change notification wait operation to return. The operating system detects a change in file size only when the file is written to the disk. For operating systems that use extensive caching, detection occurs only when the cache is sufficiently flushed.


 
mahab ©   (2009-03-03 20:47) [2]

Мне кажется это то же самое только др. словами (и еще по английски :)). Если нет пожалуйста поясни


 
Игорь Шевченко ©   (2009-03-03 21:24) [3]

Я бы пытался открыть файл в режиме запрета совместного доступа на запись. Не получилось - ждал бы и снова пытался.


 
mahab ©   (2009-03-03 21:30) [4]

Во всех режимах перепробовал - не дает доступа. Да и фиг с ним. А вот насчет WaitForSingleObject что-нибудь можно сделать?


 
mmelik ©   (2009-03-04 01:37) [5]

А попробуйте просто с определенным интервалом времени сканировать нужную вам папку и составлять список находящихся в ней файлов и их размеров. А при последующем сканировании делайте сверку по кол-ву и размеру файлов в этом каталоге и так до тех пор пока результат последнего и предпоследнего сканирования не совпадет. Это и будет означать, что файлы полностью записаны и с ними уже можно что-то делать.

Второй вариант: вам никто не мешает скопировать нужный файл в другое место и там получить к нему доступ.


 
Riply ©   (2009-03-04 07:54) [6]

> [2] mahab ©   (03.03.09 20:47)
> Мне кажется это то же самое только др. словами (и еще по английски :)).

Что-то мне не удалось в приведенной Rouse_`ом цитате, найти "размер файла изменился, только если он закрыт".



Страницы: 1 вся ветка

Текущий архив: 2009.04.19;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.02 c
1-1210841777
lead-in
2008-05-15 12:56
2009.04.19
динамическое создание отчётов в FastReport


15-1234722445
Гость
2009-02-15 21:27
2009.04.19
Вирус?


15-1234819801
Юрий
2009-02-17 00:30
2009.04.19
С днем рождения ! 17 февраля 2009 вторник


15-1234465909
Кое кто
2009-02-12 22:11
2009.04.19
Универсальный вьюер


2-1236020897
Alik
2009-03-02 22:08
2009.04.19
Вывод чисел в TMemo ровными таблицами