Пишу плагин с эмулируемой файловой системой, где некоторые элементы сами могут быть контейнерами. Есть большее желание сделать в плагине функционал по просмотру содержимого таких контейнеров. При этом, сами вложенные контейнеры не имею специфичных имен, понять, что это контейнер, можно только проанализировав его структуру.
При нажатии на первоначальный файл-контейнер все логично: вызывается AnalyseW. а по ее результатам запускается плагин OpenW. При нажатии же на вложенный контейнер в эмулируемой файловой системе, файл извлекается в Temp, также запускается AnalyseW и т.п.
Собственно вопрос: как сделать так, чтобы функционал по анализу структуры вложенных контейнеров осуществлялся в AnalyseW только на извлеченные из исходного контейнера элементы и не работал по всем обычным файлам?
Решение в виде предварительного анализа всей структуры эмулируемой файловой системы и установки атрибута каталога на вложенные контейнеры не устраивает, так как они сами по себе тоже представляет интерес.
Пока решение видится в таком виде: идентифицировать в AnalyseW извлеченные в GetFilesW элементы и обрабатывать только их.
Если есть другие решения, особенно в рамках Plugin API, рад был бы услышать.
Обработка вложенного контейнера
- zg
- zero-gravity
- Posts: 6035
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
Обработка вложенного контейнера
можно не устанавливать атрибут каталога, но при нажатии на enter заходить как в каталог.rivitna wrote:Решение в виде предварительного анализа всей структуры эмулируемой файловой системы и установки атрибута каталога на вложенные контейнеры не устраивает, так как они сами по себе тоже представляет интерес.
Обработка вложенного контейнера
Спасибо за совет!
Хотелось бы уточнить, правильно ли я понял подход:
1) ProcessPanelInputW;
2) PanelControl(FCTL_GETCURRENTPANELITEM);
3) проверка содержимого текущего элемента, если контейнер, то внутри плагина изменить текущий каталог;
4) PanelControl(FCTL_UPDATEPANEL), PanelControl(FCTL_REDRAWPANEL)
Хотелось бы уточнить, правильно ли я понял подход:
1) ProcessPanelInputW;
2) PanelControl(FCTL_GETCURRENTPANELITEM);
3) проверка содержимого текущего элемента, если контейнер, то внутри плагина изменить текущий каталог;
4) PanelControl(FCTL_UPDATEPANEL), PanelControl(FCTL_REDRAWPANEL)