Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема с компонентом мониторинга ShellNotify [D6, XP]


Страницы:   1 2 3

Dr. Genius ©   (2010-04-05 21:41:00) 

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

Скачал с torry компонент ShellNotify, который предназначен для non “catch some undocumented FileSystem events”. Принцип его работы прост: указываешь директорию, настраиваешь опции мониторинга, и компонент выводит все изменения, происходящие в отслеживаемой папке: создание, удаление, переименование и т.д.

Проблема в том, что, что обработчик события OnChange срабатывает несколько раз (в частности, при обнаружении создания файла). То ли это грубейшая ошибка разработчика, то ли я чего-то не понимаю. Буду признателен, если проясните ситуацию.

Я хотел выложить здесь код компонента, но сработало ограничение символов. Поэтому вот ссылка на компонент.
http://torry.net/vcl/filedrv/notification/ShellNotify.zip


Демо   (2010-04-06 00:29:00) [21]


> Dr. Genius   (05.04.10 23:05) [29]


На XP проверили - такой же глюк проявился.


Dr. Genius   (2010-04-05 23:05:00) [22]


> Попробуй поубивать антивирусы, все лишние процессы и без
> них запустить...


Сейчас попробую. Завтра еще попробую запустить на другом компьютере. Если найду причину - отпишусь.


> а с другими путями то же?


Да. Даже если использовать только латиницу в пути и названии файла.


> Еще посмотри, что на эти действия кажут сторонние сканеры


Сторонних сканеров у меня нет.


Демо   (2010-04-05 23:01:00) [23]


> Dr. Genius   (05.04.10 22:54) [25]
> Моя система: Windows XP SP2, Delphi 6. Файл сейчас пришлю.
>


Проверил - всё нормально отрабатывает.

Попробуй поубивать антивирусы, все лишние процессы и без них запустить...
Не могу даже придумать, что может ТАК повлиять...


Vitalts   (2010-04-05 22:56:00) [24]

Еще посмотри, что на эти действия кажут стороннии сканеры


Vitalts   (2010-04-05 22:55:00) [25]

Демо, в шапке D6
Dr. Genius, а с другими путями то же?


Dr. Genius   (2010-04-05 22:54:00) [26]

Моя система: Windows XP SP2, Delphi 6. Файл сейчас пришлю.


Демо   (2010-04-05 22:49:00) [27]


> Dr. Genius   (05.04.10 22:45) [23]
> > Проект можешь свой прислать?Свой проект я уже удалил.
> Но вместе с компонентом поставляется демо-пример с такими
> же симптомами. Откомпилирую его и пришлю. А куда присылать?
>


Бесполезно.
Только что демо-пример откомпилировал - без ошибок работает.
Но присылай - на palmih@gmail.com (Только в архиве).
Ещё - какая версия Delphi?


Dr. Genius   (2010-04-05 22:45:00) [28]


> Проект можешь свой прислать?


Свой проект я уже удалил. Но вместе с компонентом поставляется демо-пример с такими же симптомами. Откомпилирую его и пришлю. А куда присылать?


Демо   (2010-04-05 22:40:00) [29]


> > На вирусы давно проверялся?2-3 дня назад с новейшими базами.
>  Сейчас опять проверю, раз такое дело.


У меня не получается повторить эту ошибку.
Какая система?

Проект можешь свой прислать?


Dr. Genius   (2010-04-05 22:39:00) [30]


> На вирусы давно проверялся?


2-3 дня назад с новейшими базами. Сейчас опять проверю, раз такое дело.


Jeer   (2010-04-05 22:37:00) [31]


> На вирусы давно проверялся?


"По правой покрышке ногой постучал ? Ну тогда не знаю.." (С) НР


Jeer   (2010-04-05 22:35:00) [32]


> Если все будут посылать в гугль - откуда в нём возьмутся
> ответы?


Там появятся ответы тех, кто самостоятельно решил задачу.


Демо   (2010-04-05 22:35:00) [33]


> Dr. Genius   (05.04.10 22:33) [17]


Всё по-умолчанию...

На вирусы давно проверялся?


Dr. Genius   (2010-04-05 22:33:00) [34]

Флаги установлены по умолчанию, т.е. [neCreate,neDelete,neMkDir,neRenameFolder,neRenameItem,neRmDir]

Обработчик события:

procedure TfrmMain.ShellNotifyNotify(Sender: TObject; Event: TShellNotifyEvent; Path1, Path2: String);
begin
 case Event of neAssocChanged:
     lbEvents.Items.Add('A file type association has changed ' + Path1);
   neAttributes:
     lbEvents.Items.Add('The attributes of an item or folder have changed ' + Path1);
   neCreate:
     lbEvents.Items.Add('A nonfolder item has been created ' + Path1);
   neDelete:
     lbEvents.Items.Add('A nonfolder item has been deleted ' + Path1);
   neDriveAdd:
     lbEvents.Items.Add('A drive has been added ' + Path1);
   neDriveAddGUI:
     lbEvents.Items.Add('A drive has been added and the Shell should create a new window for the drive ' + Path1);
   neDriveRemoved:
     lbEvents.Items.Add('A drive has been removed ' + Path1);
   neMediaInserted:
     lbEvents.Items.Add('Storage media has been inserted into a drive ' + Path1);
   neMediaRemoved:
     lbEvents.Items.Add('Storage media has been removed from a drive ' + Path1);
   neMkDir:
     lbEvents.Items.Add('A folder has been created ' + Path1);
   neNetShare:
     lbEvents.Items.Add('A folder on the local computer is being shared via the network ' + Path1);
   neNetUnshare:
     lbEvents.Items.Add('A folder on the local computer is no longer being shared via the network ' + Path1);
   neRenameFolder:
     lbEvents.Items.Add('The name of a folder "' + Path1 + '" has changed to "' + Path2 + '"');
   neRenameItem:
     lbEvents.Items.Add('The name of a nonfolder item "' + Path1 + '" has changed to "' + Path2 + '"');
   neRmDir:
     lbEvents.Items.Add('A folder has been removed ' + Path1);
   neServerDisconnect:
     lbEvents.Items.Add('The computer has disconnected from a server ' + Path1);
   neUpdateDir:
     lbEvents.Items.Add('The contents of an existing folder have changed, but the folder still exists and has not been renamed ' + Path1);
   neUpdateImage:
     lbEvents.Items.Add('An image in the system image list has changed ' + Path1 + Path2);
   neUpdateItem:
     lbEvents.Items.Add('An existing nonfolder item has changed, but the item still exists and has not been renamed ' + Path1);
   neOther:
     lbEvents.Items.Add('Other "' + Path1 + '", "' + Path2 + '"');
 end;
end;


Демо   (2010-04-05 22:32:00) [35]


> Dr. Genius


У меня один раз как положено срабатывает.
------------------------------------------------
Если все будут посылать в гугль - откуда в нём возьмутся ответы?


Демо   (2010-04-05 22:28:00) [36]


> Dr. Genius   (05.04.10 22:19) [11]
> Как создавал файл?Открыл папку, правый клик мышкой, "Создать"
> -> "Текстовый файл". И сразу удалил (т.е. в файл я ничего
> не писал - он был пустой).


Выложи код обработчика и напиши, какие флаги установлены для обработки.


Jeer   (2010-04-05 22:26:00) [37]

ReadDirectoryChangesW и гугл в помощь


Dr. Genius   (2010-04-05 22:23:00) [38]


> И электронной почты тоже нету ?


Нет.


Игорь Шевченко   (2010-04-05 22:21:00) [39]


> Сайт разработчика заблокирован.


И электронной почты тоже нету ?


Dr. Genius   (2010-04-05 22:19:00) [40]

Как создавал файл?

Открыл папку, правый клик мышкой, "Создать" -> "Текстовый файл". И сразу удалил (т.е. в файл я ничего не писал - он был пустой).


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо