Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

Проблема с компонентом мониторинга ShellNotify   Найти похожие ветки 

 
Dr. Genius   (2010-04-05 21:41) [0]

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

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

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

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


 
Jeer ©   (2010-04-05 21:53) [1]


> Я хотел выложить здесь код компонента,


Кто-то должен для тебя разбираться в чужом компоненте ?
Почему бы не обратиться к разработчику ?


 
Dr. Genius   (2010-04-05 21:56) [2]


> Почему бы не обратиться к разработчику ?


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


 
Демо ©   (2010-04-05 21:59) [3]


> Dr. Genius   (05.04.10 21:41) 


Создай протокол событий и выложи.


 
Dr. Genius   (2010-04-05 22:03) [4]


> Создай протокол событий и выложи.


Что за протокол событий? Вы имеете в виду лог?


 
Демо ©   (2010-04-05 22:04) [5]


> Dr. Genius   (05.04.10 22:03) [4]
> > Создай протокол событий и выложи.Что за протокол событий?
>  Вы имеете в виду лог?


Ну конечно - какие события в каком порядке происходят.


 
Демо ©   (2010-04-05 22:04) [6]

Желательно и имя файла чтобы было.


 
Dr. Genius   (2010-04-05 22:13) [7]

A nonfolder item has been created C:\Documents and Settings\1\Рабочий стол\Temp\Текстовый документ.txt
A nonfolder item has been created C:\Documents and Settings\1\Рабочий стол\Temp\Текстовый документ.txt
A nonfolder item has been deleted C:\Documents and Settings\1\Рабочий стол\Temp\Текстовый документ.txt


Вот. Я создал на рабочем столе папку Temp, установил за ней слежку. Далее я просто создал текстовый файл, а потом ее удалил.


 
Демо ©   (2010-04-05 22:15) [8]

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


 
Jeer ©   (2010-04-05 22:15) [9]

Содержательно и познавательно :)


 
Демо ©   (2010-04-05 22:16) [10]

Удалено модератором


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

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

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


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


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


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


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


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


Нет.


 
Jeer ©   (2010-04-05 22:26) [14]

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


 
Демо ©   (2010-04-05 22:28) [15]


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


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


 
Демо ©   (2010-04-05 22:32) [16]


> Dr. Genius


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


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

Флаги установлены по умолчанию, т.е. [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:35) [18]


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


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

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


 
Jeer ©   (2010-04-05 22:35) [19]


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


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


 
Jeer ©   (2010-04-05 22:37) [20]


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


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


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


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


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


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


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


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

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


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


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


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


 
Демо ©   (2010-04-05 22:49) [24]


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


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


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

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


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

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


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

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


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


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


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

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


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


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


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


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


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


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


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


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


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


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


 
Германн ©   (2010-04-06 01:35) [31]


> Dr. Genius   (05.04.10 22:23) [13]
>
>
> > И электронной почты тоже нету ?
>
>
> Нет.
>

В корзину такой компонент!


 
Демо ©   (2010-04-06 02:00) [32]

Ситуация странная. На Win7 работает нормально. На Win XP, Win 2003 не желает.


 
Демо ©   (2010-04-06 02:36) [33]

Ошибка в компоненте.
Завтра попытаюсь посмотреть как решить...


 
Vitalts   (2010-04-06 10:06) [34]

Скинь куданить ехе, заценю на своей системе


 
Демо ©   (2010-04-06 12:58) [35]


> Vitalts   (06.04.10 10:06) [34]
> Скинь куданить ехе, заценю на своей системе


Да возьми из топика по ссылке. Демка работает точно так же.


 
Vitalts   (2010-04-06 13:58) [36]

у мну дельфей нету :)


 
QAZ   (2010-04-06 14:01) [37]

Удалено модератором
Примечание: Выражения выбираем, не в пивной


 
Дмитрий Белькевич   (2010-04-06 14:13) [38]

У меня как-то на XP работал TDirMon:

http://www.torry.net/quicksearchd.php?String=TDirMon&Title=Yes


 
Игорь Шевченко ©   (2010-04-06 14:18) [39]

наиболее полезный ответ дан в [14], уже лет 6 как этот способ прекрасно работает на NT-линейке (Win2k, WinXP, недавно на Windows 7) без проблем


 
Демо ©   (2010-04-06 14:39) [40]


> Игорь Шевченко ©   (06.04.10 14:18) [39]
> наиболее полезный ответ дан в [14], уже лет 6 как этот способ
> прекрасно работает на NT-линейке (Win2k, WinXP, недавно
> на Windows 7) без проблем


Эта функция ограниченной полезности и может использоваться в весьма  ограниченном круге задач.

Так что тот совет - не из той оперы. Навроде такого:
Вопрос: У меня есть мерседес, у него то-то барахлит. Как исправить?
Ответ: Купи запорожец.

Вообще - есть вопрос, вполне конкретный.



Страницы: 1 2 вся ветка

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.096 c
6-1217926149
dima_tepl
2008-08-05 12:49
2010.08.27
Работа с микроконтроллером по TCP/IP протоколу


11-1217589019
rainstuff
2008-08-01 15:10
2010.08.27
Время и дата - некорректно отображение


2-1266841096
darts116
2010-02-22 15:18
2010.08.27
Рисуем в Delphi


2-1274083814
Сид
2010-05-17 12:10
2010.08.27
TDBLookupComboBox для редактирования поля


2-1268949255
allrussia
2010-03-19 00:54
2010.08.27
Технология работы процедуры