Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Backup документов


Автор: virt 2.12.2006, 12:08
Цель:
Программа работает в фоновом режиме (загружается при старте системы). Когда пользователь сохраняет вордовские документы (*.doc) на флэшке или изменяет уже существующие там документы, нужно сохранять копии этих документов на винчестере.

Проблемы:
1) Как определить что подключена флэшка и имя диска? 
Я думаю можно проверять список директорий, но не нашёл как определить является ли диск сменным. Или может быть можно отловить событие Windows при подключении нового устройства (если такое событие вообще есть и несёт полезную информацию - присвоенное имя диска).

2) Как отслеживать созданием/изменением документов на ней?  Тут видимо можно использоваить FileSystemWatcher для каждого каталога на флэшке, но может быть есть более удобный способ?

Ресурсы: MS Visual Studio 2005

Автор: Softaz 2.12.2006, 13:54
Цитата(virt @  2.12.2006,  12:08 Найти цитируемый пост)
как определить является ли диск сменным

Код

DriveType



Цитата(virt @  2.12.2006,  12:08 Найти цитируемый пост)
FileSystemWatcher для каждого каталога на флэшке, но может быть есть более удобный способ?

Код

IncludeSubDirectories = true

Автор: virt 4.12.2006, 19:28
Можно ли проверить, установлен ли наблюдатель (FileSystemWatcher) за данной директорией или нет?
(только не сравнивая с путём, заданным у наблюдателя [FileSystemWatcher.Path])

Автор: ivashkanet 4.12.2006, 20:00
virt, а чей? Твой или чужой?
Если твой, то можно. 
Если чужой, то нужно смотреть какой хук на систему ставит FileSystemWatcher. И посмотреть зарегистрирован ли кто-нибудь на нем.

Автор: virt 4.12.2006, 20:07
... мой.


Столкнулся с еще одной проблемой. Когда на флэху стоит хук, то её не даёт безопасно отключить и вылезает сообщения с просьбой попробовать отключить попозже smile! Очень не желательно это явление. Можно ли отловить системное событие на отткючение и быстренько снять свой хук?

Автор: ivashkanet 4.12.2006, 20:22
Цитата(virt @  4.12.2006,  19:07 Найти цитируемый пост)
... мой.

Цитата(virt @  4.12.2006,  18:28 Найти цитируемый пост)
(только не сравнивая с путём, заданным у наблюдателя [FileSystemWatcher.Path]) 

Почему? Ведь это самый удобный вариант  smile 

Автор: virt 4.12.2006, 20:50
Дело в том, что если флэшку извлечь небезопасно(просто выдернуть), а потом опять вставить. Или если даже отключение произойдёт кратковременно в результате неловкого движения человека smile, то наблюдатель продолжает работать но функции свои не выполняет. Поэтому придётся периодически опять проверять все диски и смотреть установлен на них хук или нет.

Автор: ivashkanet 4.12.2006, 21:03
virt, но ведь можно словить событие, что флэшка вынута. Или вставлена.
Копай в этом направлении

Автор: virt 6.12.2006, 19:59
... но ведь можно словить событие, что флэшка вынута. Или вставлена.


Нигде не могу найти как это реализовать на C Sharp smile Подскажите кто знает (с примером кода) или хотябы где можно об этом почитать.

Автор: Rustemka 10.12.2006, 23:43
Кажется такая же тема.
Вопрос открытым там остался увы, но может будут новые идеи.

http://forum.vingrad.ru/topic-121301/0.html

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)