Есть у IE замечательная штука — "Сохранить веб-страницу полностью"
При этом он создает еще и каталог со связанными файлами, который при удалении базового файла тоже удаляется.
Думал джанкшн, но либо я не то делаю либо это не джанкшн.
Да при переименовании этого каталога, вылезает мессага типа "Если этот файл будет переименован, то он не будет принадлежать папке...", хотя файл выше уровня каталога
Куда копать, помогите
L>Есть у IE замечательная штука — "Сохранить веб-страницу полностью" L>При этом он создает еще и каталог со связанными файлами, который при удалении базового файла тоже удаляется. L>Да при переименовании этого каталога, вылезает мессага типа "Если этот файл будет переименован, то он не будет принадлежать папке...", хотя файл выше уровня каталога
Это фишка реализована на уровне Windows Explorer'а, а не файловой системы. Попробуй удалить страничку в Far'е или в Total Commander'е — удаляться будут по отдельности. Так что тут только самому если такое же сделать.
Re[2]: "Прикленные" (связанные?) файлы. Куда копать?
Здравствуйте, x64, Вы писали:
L>>Есть у IE замечательная штука — "Сохранить веб-страницу полностью" L>>При этом он создает еще и каталог со связанными файлами, который при удалении базового файла тоже удаляется. L>>Да при переименовании этого каталога, вылезает мессага типа "Если этот файл будет переименован, то он не будет принадлежать папке...", хотя файл выше уровня каталога
x64>Это фишка реализована на уровне Windows Explorer'а, а не файловой системы. Попробуй удалить страничку в Far'е или в Total Commander'е — удаляться будут по отдельности. Так что тут только самому если такое же сделать.
В том то и дело что в фаре удаляется на ура. Думается это системная функция
Re[3]: "Прикленные" (связанные?) файлы. Куда копать?
Возможно, FAR удаляет не через DeleteFile(), а через SHFileOperation() как Проводник, либо FAR сам следит за этой настройкой и имитирует алгоритм Проводника в этом случае.
L>Думается это системная функция
Вот тебе взрослые люди говорят, а ты не веришь. Ну напиши
DeleteFile ("C:\\rsdn.htm");
Сохрани первую страницу RSDN в C:\rsdn.htm и выстави соответствующую настройку в свойствах папки. Будешь неприятно удивлён.
Re[4]: "Прикленные" (связанные?) файлы. Куда копать?
Здравствуйте, x64, Вы писали:
L>>В том то и дело что в фаре удаляется на ура.
x64>Возможно, FAR удаляет не через DeleteFile(), а через SHFileOperation() как Проводник, либо FAR сам следит за этой настройкой и имитирует алгоритм Проводника в этом случае.
L>>Думается это системная функция
x64>Вот тебе взрослые люди говорят, а ты не веришь. Ну напиши
x64>
x64>DeleteFile ("C:\\rsdn.htm");
x64>
x64>Сохрани первую страницу RSDN в C:\rsdn.htm и выстави соответствующую настройку в свойствах папки. Будешь неприятно удивлён.
Возможно однако задачи это не меняет Хотя суживает огород
Re[5]: "Прикленные" (связанные?) файлы. Куда копать?
Здравствуйте, x64, Вы писали:
L>>Возможно однако задачи это не меняет
x64>Задачу ты до сих пор не огласил.
Ох сорри
Имеется файл проекта, и энное количество файлов к этому проекту.
Файлы видео и картинки в основном.
Можно было бы хранить их в бинарнике, но при сохранении слишком долго перестраивать (файло — рекламное видео в HD формате), плюс при аплоадинге на сервера, проще проверять когда они отдельно.
Посему решил, работать по типу эксплорера. Но хочется при удалении xml прибивать и связанные файлы. В своей панели управления это без проблем, но в браузере, юзвери могут и не прибить связанный каталог
Re[7]: "Прикленные" (связанные?) файлы. Куда копать?
L>Имеется файл проекта, и энное количество файлов к этому проекту. L>Файлы видео и картинки в основном. L>Можно было бы хранить их в бинарнике, но при сохранении слишком долго перестраивать (файло — рекламное видео в HD формате), плюс при аплоадинге на сервера, проще проверять когда они отдельно.
Хм... малопонятно, но ладно, допустим.
L>Посему решил, работать по типу эксплорера.
Что значит "работать по типу эксплорера"? Почему решил именно так?
L>Но хочется при удалении xml прибивать и связанные файлы.
О-па, теперь ещё выясняется, что какой-то XML у тебя там есть. Что за XML? откуда? для чего он?
L>В своей панели управления это без проблем...
Какая-такая панель ещё?
L>...но в браузере, юзвери могут и не прибить связанный каталог
Я вообще не понимаю, что значит "прибить каталог в броузере"? Броузер вообще-то с HTML работает и никаких каталогов не показывает и не работает с ними. Имеется в виду FTP, ActiveX или что-то другое? О чём речь вообще?
P.S.
Ты забыл, что грамотно составленный вопрос = половина ответа. Не трать своё и наше время, пиши правильно с первого раза.
Re[8]: "Прикленные" (связанные?) файлы. Куда копать?
Здравствуйте, lom2k, Вы писали:
L>Есть у IE замечательная штука — "Сохранить веб-страницу полностью" L>При этом он создает еще и каталог со связанными файлами, который при удалении базового файла тоже удаляется. L>Думал джанкшн, но либо я не то делаю либо это не джанкшн.
...
Это "connected files", фича эсплорера:
HTML documents often have a number of associated graphics files, a style sheet file, several Microsoft JScript (compatible with ECMA 262 language specification ) files, and so on. When you move or copy the primary HTML document, you also usually want to move or copy its associated files to avoid breaking links. Unfortunately, there has been no easy way until now to determine which files are related to any given HTML document other than by analyzing their contents. To alleviate this problem, Windows 2000 provides a simple way to connect a primary HTML document to its group of associated files. If file connection is enabled, when the document is moved or copied all its connected files go with it.
Вкл/выкл производится здесь: HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\NoFileFolderConnection
Связывание происходит по имени файла: папка должна иметь такое же название(без расширения) + "_files" (есть еще локализованные варианты вроде "_fitxategiak").
SHFileOperation по умолчанию корректно обрабатывает connected files, но это поведение можно изменить с помощью флага FOF_NO_CONNECTED_ELEMENTS.
Re[2]: "Прикленные" (связанные?) файлы. Куда копать?
ЮЖ>Связывание происходит по имени файла: папка должна иметь такое же название(без расширения) + "_files" (есть еще локализованные варианты вроде "_fitxategiak").
Поправочка: "расширение" папки может начинаться также и с точки, т.е. "page.htm" и "page.files".
Re[9]: "Прикленные" (связанные?) файлы. Куда копать?
L>Нужно чтобы при удалении файла <Файл проекта.kpr> в экслорере (explorer.exe) удалялся каталог <Файл проекта.files>
Понятно теперь. Значит, если нужно только для Проводника такое, то думаю, имеет смысл написать что-то вроде shell extension DLL, но здесь я не спец, здесь лучше подскажет Юрий Жмеренецкий, — он как раз где-то в этой области работает, как я понял. Если нужно не только для Проводника, т.е. чтобы работало в любом приложении, тогда драйвер-фильтр файловой системы: либо legacy (все версии Windows) либо минифильтр (только для Windows XP SP2 и выше).
С драйвером-фильтром могу помочь, не бесплатно, разумеется.
Re[9]: "Прикленные" (связанные?) файлы. Куда копать?
L>Нужно чтобы при удалении файла <Файл проекта.kpr> в экслорере (explorer.exe) удалялся каталог <Файл проекта.files>
С помощью shell extension это невозможно сделать, т.к. ближайшие варианты отпадают по следующим причинам:
* context menu extension — гарантированно не будет работать если удаляется сразу несколько файлов разных типов(и в том числе 'kpr'), да и для одного файла врядли получится, — delete verb недокументирован, сюрпризы там точно будут.
* ICopyHook — можно следить за папками, за файлам нельзя
Re[9]: "Прикленные" (связанные?) файлы. Куда копать?
Здравствуйте, lom2k, Вы писали:
L>Есть у IE замечательная штука — "Сохранить веб-страницу полностью" L>При этом он создает еще и каталог со связанными файлами, который при удалении базового файла тоже удаляется. L>Думал джанкшн, но либо я не то делаю либо это не джанкшн. L>Да при переименовании этого каталога, вылезает мессага типа "Если этот файл будет переименован, то он не будет принадлежать папке...", хотя файл выше уровня каталога L>Куда копать, помогите
ShellExtension не поможет, как уже сказали. Драйвер, имхо, перебор. Если подходит вариант только для NTFS, начиная с Win2000, то можно использовать Change Journals — ловить удаление базового файла, вытягивать из него extents и делить их тоже. Аккуратная реализация занимает 2-3 дня и работает замечательно. Нужно только помнить, что ушлый админ может журналирование отключить.
Re[9]: "Прикленные" (связанные?) файлы. Куда копать?
L>Нужно чтобы при удалении файла <Файл проекта.kpr> в экслорере (explorer.exe) удалялся каталог <Файл проекта.files>
Как один из вариантов, посмотри на функции FindFirstChangeNotification() и ReadDirectoryChangesW(). Эти функции позволяют получать уведомление, в частности, о том, что определённая папка/файл была удалена. Правда, имеются нюансы, — подробнее в документации и в поиске.
Re[2]: "Прикленные" (связанные?) файлы. Куда копать?
Ну, перебор — не перебор, но, думается мне, это единственный реально стабильный вариант, который будет работать практически на любой ОС. Думаю, вы с этим согласитесь.
Re[10]: "Прикленные" (связанные?) файлы. Куда копать?
Здравствуйте, x64, Вы писали:
L>>Нужно чтобы при удалении файла <Файл проекта.kpr> в экслорере (explorer.exe) удалялся каталог <Файл проекта.files>
x64>Как один из вариантов, посмотри на функции FindFirstChangeNotification() и ReadDirectoryChangesW(). Эти функции позволяют получать уведомление, в частности, о том, что определённая папка/файл была удалена. Правда, имеются нюансы, — подробнее в документации и в поиске.
Если нужно мониторить какую-то определенную папку, то вариант хороший, а вот если все диски (как я понял надо именно это), то жуткие тормоза будут. Я чуть выше Change Journals предложил, имхо более подходящее решение в данном случае.