Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблемы с установкой компонента [D6, WinXP]


Elen ©   (2006-09-19 13:38:00) 

Господа!

Мне нужно получать информацию из вкладки "сводка" свойств файла. Вот посоветовали компонентик 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.

Внимание вопрос: как можно это обойти.

И кстати - знает ли кто готовые компоненты, которые могут поместить/вытянуть инфу из вкладок свойств файла

Если вопрос не в тему - извиняюсь зарание...


Elen   (2006-09-20 11:05:00) [1]


> Наиль

Большое спасибо. Мне даже нужнее работать не с потоком "сводка", а самостоятельно создавать поток для файла - типа хранить секретную инфу


Elen   (2006-09-20 10:40:00) [2]


> Проверил что получается WinRar'ом.

А вижу вижу. у меня тоже удалось


Наиль   (2006-09-20 10:18:00) [3]

Проверил что получается WinRar'ом.
Имена потоков идут после STM:
А файл сводки имеет такое название
filename:=#5'SummaryInformation';


Elen   (2006-09-20 10:08:00) [4]


> Наиль

Сейчас пока получается так more 1.txt:stream.
Теперь бы узнать имя нужного потока... Я еще почитаю ссылочку.
А с винраром не выходит. не пойму куда он потоки сохраняет


Наиль   (2006-09-20 09:58:00) [5]

> 1.txt > 2.dat:1.txt
Извеняюсь, за неточное востановление текста.
В оригинале было так.
type 1.txt > 2.dat:1.txt


Elen   (2006-09-20 09:55:00) [6]


> Наиль

Чего-то с раром не выходит

> 1.txt > 2.dat:1.txt
> del 1.txt
> more <2.dat:1.txt

А это дает пустой файл 2.dat


Elen   (2006-09-20 09:48:00) [7]


> Надеюсь не забыла про "Сохранять файловые потоки"? (см.
> [1])

Выставленно. Щас попробую nsx.


Наиль   (2006-09-20 09:32:00) [8]


> Кстати я пробую Раром, но в файле нет и намека на сводки,
> хотя идея работать другой прогой интересна.

Надеюсь не забыла про "Сохранять файловые потоки"? (см. [1])
Желательно сохранять пустой файл со сводкой.
Кстати программа по ссылке в [3] отлично отделяет поток от файла.
При пустой сводке альт.поток может отсутствовать.
В файле-потоке-сводке (файле сводки) строки в уникоде. Их легче распозновать, если написаны латинецей. Первые два символа наводят на мысль, что существует три формата файла: 1 для ANSI и 2 для Unicode.


Elen   (2006-09-20 09:19:00) [9]


> Наиль

Да, мне уже ясно. Что-ж придется работать с этим интерфейсом... :-\
Кстати я пробую Раром, но в файле нет и намека на сводки, хотя идея работать другой прогой интересна.


Наиль   (2006-09-20 09:06:00) [10]


> попробую юзать ДЛЛки,

Бесполезно, ибо они не предоставляют ни каких функций. docprop2.dll предоставляет только COM-объект реализующий IShellPropSheetEx (или нечто подобное). Напомню, что IShellPropSheetEx предназначен для выдачи закладок окна свойств в любом другом окне. К примеру на твоей форме.


Elen   (2006-09-20 07:58:00) [11]


> Наиль

Весьма Благодарствую. Я имею дело с NTFS, поэтому должно получиться. попробую юзать ДЛЛки, а то мне с интерфейсами не особо понятно

Спасибо за ссылки

Всего наилучшего!


Наиль   (2006-09-19 18:33:00) [12]

Так как этим вопросом до этого не занимался, то провёл небольшое раследование. Во-первых 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-19 15:41:00) [13]


> Наиль

C компонентом не получилось...:-( Какие другие?... IShellPropSheet?
Я не могу на него литературу найти уже ищу сколько... Хоть бы примерчик...


Наиль   (2006-09-19 15:21:00) [14]

Тоже немного не в тему.
Заполни свойства какого-нибудь файла, желательно английскими буквами.
Заархивируй WinRar'ом без сжатия с отметкой "Сохранять файловые потоки" (на закладке Дополнительно). Можешь анализировать полученый архив.
Это я к тому, что если с компонентом не получится, то есть другие способы получения "сводки".


Наверх

Титульная страница Поиск, карта сайта Написать письмо