Текущий архив: 2006.10.29;
Скачать: CL | DM;
Вниз
Проблемы с установкой компонента Найти похожие ветки
← →
Elen © (2006-09-19 13:38) [0]Господа!
Мне нужно получать информацию из вкладки "сводка" свойств файла. Вот посоветовали компонентик PropSheet.
Когда я инсталю его Package, мне сообщают что $DENYPACKAGEUNIT "ComServ" cannot be put into a package
Я знаю что это означает что ComServ скомпилен так, что его лучше в Package не ставить, но именно в package его требует следующий код :initialization
TFWPropertySheetFactory.Create(ComServer, TFWPropertySheet,
Class_FWPropertySheet, "CharacterPage", "", ciMultiInstance, tmApartment);
finalization
ReleaseActivateManifestContext;
end.
т.е. переменка ComServer берется из ComServ.
Внимание вопрос: как можно это обойти.
И кстати - знает ли кто готовые компоненты, которые могут поместить/вытянуть инфу из вкладок свойств файла
Если вопрос не в тему - извиняюсь зарание...
← →
Наиль © (2006-09-19 15:21) [1]Тоже немного не в тему.
Заполни свойства какого-нибудь файла, желательно английскими буквами.
Заархивируй WinRar"ом без сжатия с отметкой "Сохранять файловые потоки" (на закладке Дополнительно). Можешь анализировать полученый архив.
Это я к тому, что если с компонентом не получится, то есть другие способы получения "сводки".
← →
Elen © (2006-09-19 15:41) [2]
> Наиль
C компонентом не получилось...:-( Какие другие?... IShellPropSheet?
Я не могу на него литературу найти уже ищу сколько... Хоть бы примерчик...
← →
Наиль © (2006-09-19 18:33) [3]Так как этим вопросом до этого не занимался, то провёл небольшое раследование. Во-первых IShellPropSheetEx описывается в справке по Win32.
Во-вторых информация "сводка" выдаётся библиотеками docprop.dll или docprop2.dll. В-третьих, в сети можно прочитать о создании закладок (поиск по PropertySheetHandlers DllRegisterServer). Анализ показал, что не существует интерфейса для получения сведений из закладки "сводка". Можно лишь вызвать соотвествующую закладку в своей программе.
А теперь о главном.
Я начинал заниматься закладкой сводкой до того, как узнал, что такое COM. Правда ограничился тем, что определил в каком порядке нужно
буду писать программу для получения сведений о свойстве файла.
(от постановки задачи до нахождения пути решения потребовалось 2 дня)
Сразу обратим внимание на то, что для файлов расположеных на FAT-дисках сводка отсутствует. Дело в том, что в NTFS файлы состоят из потоков данных. Тот что мы видим в проднике основной. Вторичные (правильно - альтернативные) потоки никак не обнаруживаются, но занимают место на диске и могут содержать информацию.
Запись и чтение в дополнительный поток:1.txt > 2.dat:1.txt
del 1.txt
more <2.dat:1.txt
Так вот. Сводка как раз в таком потоке и храниться. Правда для получения этой информации нужно знать имя потка. Слава богу онj всегда одно. И WinRar его знает. Правда в названии используется символ с кодом меньше 32. Но это уже другая проблема. Используя [1] можно разобраться с форматом потока. Остальное дело техники.
Только что нашёл:
http://amdf.pp.ru/alternate_data_streams.php - принципы работы с потоками теория и C++
http://amdf.pp.ru/nsx.php - программа для работы с потоками.
Думая с меня на сегодня хватит.
PS. Если что извеняйте, потерял текст при попытке отправить в закрытую ветку. Пришлось востаналивать.
← →
Elen © (2006-09-20 07:58) [4]
> Наиль
Весьма Благодарствую. Я имею дело с NTFS, поэтому должно получиться. попробую юзать ДЛЛки, а то мне с интерфейсами не особо понятно
Спасибо за ссылки
Всего наилучшего!
← →
Наиль © (2006-09-20 09:06) [5]
> попробую юзать ДЛЛки,
Бесполезно, ибо они не предоставляют ни каких функций. docprop2.dll предоставляет только COM-объект реализующий IShellPropSheetEx (или нечто подобное). Напомню, что IShellPropSheetEx предназначен для выдачи закладок окна свойств в любом другом окне. К примеру на твоей форме.
← →
Elen © (2006-09-20 09:19) [6]
> Наиль
Да, мне уже ясно. Что-ж придется работать с этим интерфейсом... :-\
Кстати я пробую Раром, но в файле нет и намека на сводки, хотя идея работать другой прогой интересна.
← →
Наиль © (2006-09-20 09:32) [7]
> Кстати я пробую Раром, но в файле нет и намека на сводки,
> хотя идея работать другой прогой интересна.
Надеюсь не забыла про "Сохранять файловые потоки"? (см. [1])
Желательно сохранять пустой файл со сводкой.
Кстати программа по ссылке в [3] отлично отделяет поток от файла.
При пустой сводке альт.поток может отсутствовать.
В файле-потоке-сводке (файле сводки) строки в уникоде. Их легче распозновать, если написаны латинецей. Первые два символа наводят на мысль, что существует три формата файла: 1 для ANSI и 2 для Unicode.
← →
Elen © (2006-09-20 09:48) [8]
> Надеюсь не забыла про "Сохранять файловые потоки"? (см.
> [1])
Выставленно. Щас попробую nsx.
← →
Elen © (2006-09-20 09:55) [9]
> Наиль
Чего-то с раром не выходит
> 1.txt > 2.dat:1.txt
> del 1.txt
> more <2.dat:1.txt
А это дает пустой файл 2.dat
← →
Наиль © (2006-09-20 09:58) [10]> 1.txt > 2.dat:1.txt
Извеняюсь, за неточное востановление текста.
В оригинале было так.type 1.txt > 2.dat:1.txt
← →
Elen © (2006-09-20 10:08) [11]
> Наиль
Сейчас пока получается такmore 1.txt:stream
.
Теперь бы узнать имя нужного потока... Я еще почитаю ссылочку.
А с винраром не выходит. не пойму куда он потоки сохраняет
← →
Наиль © (2006-09-20 10:18) [12]Проверил что получается WinRar"ом.
Имена потоков идут послеSTM:
А файл сводки имеет такое названиеfilename:=#5"SummaryInformation";
← →
Elen © (2006-09-20 10:40) [13]
> Проверил что получается WinRar"ом.
А вижу вижу. у меня тоже удалось
← →
Elen © (2006-09-20 11:05) [14]
> Наиль
Большое спасибо. Мне даже нужнее работать не с потоком "сводка", а самостоятельно создавать поток для файла - типа хранить секретную инфу
Страницы: 1 вся ветка
Текущий архив: 2006.10.29;
Скачать: CL | DM;
Память: 0.51 MB
Время: 0.054 c