Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Вниз

Проблема с компонентом мониторинга 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) без проблем


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

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

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


 
Leonid Troyanovsky ©   (2010-04-06 14:44) [41]


> Демо ©   (06.04.10 14:39) [40]

> Вопрос: У меня есть мерседес, у него то-то барахлит.

Скорее: хз какой комбайн, собранный из металлолома.

--
Regards, LVT.


 
Демо ©   (2010-04-06 14:47) [42]


> Dr. Genius


Похоже, всё же проблема не в компоненте.
На самом деле в Windows XP, Windows Server 2003 это метод работает не так, как описано в MSDN при создании файлов.

Можно простейшие костыли прилепить.
Для этого сохранять последнее обработанное извещение.
При поступлении нового сравнивать с предыдущим. Если оба извещения и Параметры одинаковые, то пропускать обработку.


 
Демо ©   (2010-04-06 14:48) [43]


> Leonid Troyanovsky ©   (06.04.10 14:44) [41]
> > Демо ©   (06.04.10 14:39) [40] > Вопрос: У меня есть мерседес,
>  у него то-то барахлит.Скорее: хз какой комбайн, собранный
> из металлолома.--Regards, LVT.


Может и так, но сути-то не меняет.


 
Leonid Troyanovsky ©   (2010-04-06 14:53) [44]


> Демо ©   (06.04.10 14:48) [43]

> Может и так, но сути-то не меняет.

А нафиг нам ржавый комбайн, когда можно приобрести
новенький запорожец?

--
Regards, LVT.


 
Демо ©   (2010-04-06 14:55) [45]


> > Демо ©   (06.04.10 14:48) [43] > Может и так, но сути-
> то не меняет.А нафиг нам ржавый комбайн, когда можно приобрестиновенький
> запорожец?


Это ReadDirectoryChangesW новый? -))


 
Anatoly Podgoretsky ©   (2010-04-06 14:56) [46]

> Демо  (06.04.2010 14:55:45)  [45]

Даже пылью не покрылся.


 
Демо ©   (2010-04-06 14:57) [47]


> Anatoly Podgoretsky ©   (06.04.10 14:56) [46]
> > Демо  (06.04.2010 14:55:45)  [45]Даже пылью не покрылся.
>


Ну да, если каждый день протирать, то и запорожец двадцатилетний новым будет.


 
Игорь Шевченко ©   (2010-04-06 15:36) [48]

Я не понимаю одного - в начале компонента выложена туча ссылок на документацию в MSDN. Почему бы ее не почитать, прежде чем задавать вопросы/критиковать компонент/критиковать иные методы ?


 
Демо ©   (2010-04-06 15:50) [49]


> Игорь Шевченко ©   (06.04.10 15:36) [48]
> Я не понимаю одного - в начале компонента выложена туча
> ссылок на документацию в MSDN. Почему бы ее не почитать,
>  прежде чем задавать вопросы/критиковать компонент/критиковать
> иные методы ?


А что там такого можно вычитать по поводу критики?


 
Dr. Genius   (2010-04-06 18:22) [50]

Снова здравствуйте.

Проблема моя так и не решилась.

Ничего нового не скажу, но те менее... Попробовал скомпилировать программу на другом компьютере, но опять все то же самое. Отключал все лишние процессы, переустанавливал компонент, запускал программу на еще на одном компьютере (на Висте), но ничего не помогло.



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

Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.58 MB
Время: 0.083 c
15-1264806755
Petr V. Abramov
2010-01-30 02:12
2010.08.27
паровоз :)


11-1216300266
Ruzzz
2008-07-17 17:11
2010.08.27
Есть что-то подобное TCriticalSection в KOL


15-1264381741
Кто б сомневался
2010-01-25 04:09
2010.08.27
Пайкерит (прочный материал)


15-1269725156
pleasure
2010-03-28 00:25
2010.08.27
Role-Based Security Rules UI


15-1274352889
crazy~driver
2010-05-20 14:54
2010.08.27
Распечатать с dbgrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский