Форум: "Начинающим";
Текущий архив: 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