Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Копирование файлов на флешку, Узнать какие файлы копируются 
V
    Опции темы
artmaestro
Дата 4.7.2012, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 8.11.2010

Репутация: нет
Всего: 1



Здравствуйте.

Проблема в следующем, имеется программа, которая запущена в системе и свернута в трее. Необходимо сделать так, чтобы при копирование на съемный носитель (флешку или винчестер) программа показывала сообщение.

Программа должна реагировать при любом копировании на съемный носитель, т.е. через Тотал коммандер или просто через проводник.

Подскажите пожалуйста как это можно реализовать или в каком направлении нужно рыть.



П.С. На данный момент тип именно съемного носителя (НЕ дисковода), я определил. Теперь необходимо узнать куда копируются файлы на флешку или нет. 

Это сообщение отредактировал(а) artmaestro - 4.7.2012, 14:54
PM MAIL   Вверх
Khim
Дата 4.7.2012, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 13.12.2008

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



FindFirstChangeNotification
SHChangeNotifyRegister
unit DirWatch;
яндекс'Ex

PM MAIL   Вверх
artmaestro
Дата 4.7.2012, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 8.11.2010

Репутация: нет
Всего: 1



Спасибо за совет.

вот результат моей работы

Код

procedure TForm4.Timer1Timer(Sender: TObject);
var
  hDir : THandle;
begin
hDir:=FindFirstChangeNotification('C:\\',TRUE,FILE_NOTIFY_CHANGE_DIR_NAME);
if hDir=INVALID_HANDLE_VALUE then

        ShowMessage('Не могу следить за каталогом')

  else
    begin
    if WaitForSingleObject(hDir,500)=WAIT_OBJECT_0 then
       begin
          memo1.Lines.Add('Работаю');
       end;
     end;
     FindCloseChangeNotification(hDir);


end;





Только появилось одно НО. функция регаирует не только на создание файлов, но и на их удаление. Как определить, что на флешке создаются или изменяются файлы (замена при копировании).

Смотрел флаги событий, взял FILE_NOTIFY_CHANGE_DIR_NAME - помоему самый подходящий для решения моей проблемы.

FILE_NOTIFY_CHANGE_FILE_NAME    Изменение имен файлов, расположенных в указанном каталоге и его подкаталогах, создание и удаление файлов
FILE_NOTIFY_CHANGE_DIR_NAME    Изменение имен каталогов, создание и удаление каталогов
FILE_NOTIFY_CHANGE_ATTRIBUTES    Изменение атрибутов
FILE_NOTIFY_CHANGE_SIZE    Изменение размеров файлов (после записи содержимого внутренних буферов на диск)
FILE_NOTIFY_CHANGE_LAST_WRITE    Изменение времени записи для файлов (после записи содержимого внутренних буферов на диск)
FILE_NOTIFY_CHANGE_SECURITY    Изменение дескриптора защиты 

PM MAIL   Вверх
Qu1nt
Дата 4.7.2012, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 602
Регистрация: 13.1.2007

Репутация: 5
Всего: 50



ReadDirectoryChanges.
PM MAIL   Вверх
Khim
Дата 4.7.2012, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 13.12.2008

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



Компонента TSHChangeNotify и демка внутри

Присоединённый файл ( Кол-во скачиваний: 52 )
Присоединённый файл  shellmonitor.rar 219,87 Kb
PM MAIL   Вверх
artmaestro
Дата 4.7.2012, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 8.11.2010

Репутация: нет
Всего: 1



Огромное спасибо! Дай Бог здоровья!


PM MAIL   Вверх
artmaestro
Дата 4.7.2012, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 8.11.2010

Репутация: нет
Всего: 1



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

Искал как можно изменить диск, который будет отслеживать данный компонент - нечего не нашел. Я так понял, что он работает только с жестким диском.
PM MAIL   Вверх
Qu1nt
Дата 4.7.2012, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 602
Регистрация: 13.1.2007

Репутация: 5
Всего: 50



Код

HardDriveOnly := False;


PM MAIL   Вверх
artmaestro
Дата 4.7.2012, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 8.11.2010

Репутация: нет
Всего: 1



Цитата(Qu1nt @ 4.7.2012,  21:54)
Код

HardDriveOnly := False;

Делал так, не помогает.

Добавлено через 9 минут и 17 секунд
делал как показано в примере

при создании программы написал

Код

procedure TForm4.FormCreate(Sender: TObject);
begin

cn.HardDriveOnly:=False;
cn.Execute;
end;



и потом в обработчиках написал


Код

procedure TForm4.cnCreate(Sender: TObject; Flags: Cardinal; Path1: string);
begin
Memo1.Lines.Add(Path1);
end;

procedure TForm4.cnDelete(Sender: TObject; Flags: Cardinal; Path1: string);
begin
Memo1.Lines.Add(Path1);
end;

procedure TForm4.cnUpdateDir(Sender: TObject; Flags: Cardinal; Path1: string);
begin
Memo1.Lines.Add(Path1);
end;

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

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

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

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

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


 




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


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

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