ReadDirectoryChangesW считает, что ярлык удаляется сразу после создания

StackOverflow https://stackoverflow.com/questions/1143115

Вопрос

Я использую это реализация ReadDirectoryChangesW для отслеживания изменений на рабочем столе.Моя программа планирует запустить какую-нибудь небольшую программу при создании файла на рабочем столе.

Теперь проблема, с которой я сталкиваюсь, заключается в том, что когда я создаю новый ярлык с помощью контекстного меню правой кнопки мыши, ReadDirectoryChangesW получает уведомление о том, что файл создан, но сразу после этого получает другое уведомление о том, что файл был удален.Я сталкиваюсь с этой проблемой начиная с Windows Vista.

У кого-нибудь есть какие-нибудь идеи, что может быть не так?Есть ли другая функция, которую я должен использовать для отслеживания изменений каталога, характерных для Vista и 7?

Спасибо, Кришна

Это было полезно?

Решение 3

Мне удалось решить эту проблему.Я все еще не знаю, почему я получаю все эти странные события ReadDirectyChangesW, но я получил свой конечный результат, поэтому я оставляю этот вопрос в покое.

Спасибо за всю помощь.

Другие советы

Windows делает некоторые забавные вещи с файлами .lnk, так что вы не можете видеть расширение .lnk.Возможно, именно поэтому отправляется удаленное уведомление, потому что сама Windows не может видеть файл "New Shortcut.lnk", только "Новый ярлык".Но это всего лишь теория.

Итак, что я бы сделал, так это попытался обойти это и проигнорировать уведомление об удалении файла, если файл все еще существует.Предполагая, что вы, конечно, сможете выяснить, что файл .lnk все еще существует :)

Определили ли вы какие-либо фильтры:возможно, вы видите, что ярлык создается заново (и не соответствует вашему фильтру).

Проводник имеет тенденцию создавать объекты с фиксированным именем, а затем переименовывать их.Итак ReadDirectoryChangesW увидите множество изменений.

Дополнительные соображения:

Обратите внимание, что буфер с уведомлением об изменении может содержать несколько уведомлений, и все они считываются.

Что делает Монитор процесса показывать в одно и то же время?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top