![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с компонентом мониторинга ShellNotify [D6, XP]
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]
Как создавал файл?
Открыл папку, правый клик мышкой, "Создать" -> "Текстовый файл". И сразу удалил (т.е. в файл я ничего не писал - он был пустой).