Главная страница
    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) без проблем


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

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

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



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

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

Наверх




Память: 0.54 MB
Время: 0.062 c
2-1268471112
Тофер
2010-03-13 12:05
2010.08.27
Как подать звуковой сигнал с делфи?


2-1265350338
Mery
2010-02-05 09:12
2010.08.27
сворачивание программы на панель задач


2-1273664604
Дмитро
2010-05-12 15:43
2010.08.27
delphi


4-1236677806
Demo_nik
2009-03-10 12:36
2010.08.27
как перехватить функцию копирования


2-1273042460
'<>
2010-05-05 10:54
2010.08.27
Как преобразовать 30 байт в число и обратно?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский