Мониторинг изменения файла уже открытого программой

Тема в разделе "WASM.WIN32", создана пользователем ALLeX, 14 дек 2009.

  1. ALLeX

    ALLeX Member

    Публикаций:
    0
    Регистрация:
    21 окт 2004
    Сообщения:
    141
    Адрес:
    Ukraine
    Привет,

    Открываю файл на чтение. Как проще всего узнать что файл изменился? Или придется юзать функции работы с директориями? (типа FindFirstChangeNotification)
     
  2. Luke

    Luke New Member

    Публикаций:
    0
    Регистрация:
    10 сен 2009
    Сообщения:
    11
    Прочитать весь и потом сравнивать, больше никак.
    Ну либо перехват WriteFile();
     
  3. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    >Как проще всего узнать что файл изменился?
    по изменению времени изменения файла)))

    можно найти хэндл файла, через него найти процесс, который открыл файл, и уже с ним химичить, например, как уже было сказано:
    да, или просто с определенной периодичностью вызывать ReadDirectoryChanges...
     
  4. ALLeX

    ALLeX Member

    Публикаций:
    0
    Регистрация:
    21 окт 2004
    Сообщения:
    141
    Адрес:
    Ukraine
    Rel
    А через хендл который я получаю после открытия файла низзя ничего поймать? Перехватывать WriteFile, imho через чур заумно для реализации простой функции: мониторить файл настроек программы на предмет изменения... Неужели нет менее сложных ходов?
     
  5. ALLeX

    ALLeX Member

    Публикаций:
    0
    Регистрация:
    21 окт 2004
    Сообщения:
    141
    Адрес:
    Ukraine
    PS. Постоянно читать и сравнивать... ну вы сами понимаете.. :dntknw:
     
  6. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    так блин... самое простое в отдельной нитке ждать по хендлу FindFirstChangeNotification... или же в отдельной нитке периодически проверять время изменения файла...

    хз... может есть что-то в тему синхронного/асинхронного ввода/вывода... есть такая вот вещь:
    http://msdn.microsoft.com/en-us/library/aa363479%28VS.85%29.aspx
    но я ни разу не пользовался и не вдавался в подробности...
    вообще почитай этот раздел, может что найдешь:
    http://msdn.microsoft.com/en-us/library/ms686358%28VS.85%29.aspx
     
  7. gorodon

    gorodon New Member

    Публикаций:
    0
    Регистрация:
    19 окт 2009
    Сообщения:
    301
    А может просто выкурить ф-ю WaitForSingleObject - попробовать встать в обработку в отдельном потоке и посмотреть, будет ли реакция при изменении файла (из другого потока)...
     
  8. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    по хендлу файла без толку, насколько я знаю...
     
  9. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    мож просто запретить доступ чтоб не изменяли