|
Предпросмотр
|
|||
---|---|---|---|
#18+
Есть приложение - CATIA (конструкторская 3-D программа, если что) Там есть проект на VBA Задача - на одной из форм организовать предпросмотр файлов(.Catpart,.Catproduct,.Catdrawing) этой программы. Как сделать это если бы это были просто картинки или офисные документы- здесь на форуме найти можно. А вот как с файлами этого типа быть? Если в окошке открытия файла (папки)в Windows выбрать "Отображать содержимое" - то там появляются нужные картинки, значит каким-то образом должно быть можно добраться до этой функции винды и создать картинку для предпросмотра, не открывая сам файл. Кто подскажет - можно ли это сделать и как? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 14:09 |
|
Предпросмотр
|
|||
---|---|---|---|
#18+
Serg197311 не открывая сам файл. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 14:16 |
|
Предпросмотр
|
|||
---|---|---|---|
#18+
Serg197311, читать Adding Icons, Previews and Shortcut Menus и в округе. Это набор интерфейсов и техник, которые использует Windows Explorer в просмотра содержимого. ПредполагаеЦЦа, что те, кто хотят сделать предспросмотр в своём приложении, и те, кто делают приложения, создающие документы в своих форматах, этим соглашениям следуют. Проблема в том, что даже для опытных программистов на C++ этот пласт технологий поднять не так просто, и потребует от нескольких дней до нескольких недель или даже месяцев, если раньше с COM и OLE не имели дела. Если же хочеЦЦа реализовать просмотр на VBA, то придётся ещё и (если цивилизованно) изучить быстренько MIDL/ODL , развернуть его компилятор, и написать адаптированные к использованию в VBA библиотеки типов с описаниями интерфейсов. Можно назвать этот путь "путём самурая". Это правильно с точки зрения профессионального роста (но понадобится ли этот опыт в дальнейшем?), сложно, трудоёмко, но выполнимо. Но быть может, есть "путь ниндзя". Shocker.Pro это вряд ли - не открывая. Обычно в подобных случаях небольшой битмап для предпросмотра хранится в самом файле. Надо поискать спецификацию этого файла, если она есть в открытом доступе, конечно. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2019, 15:21 |
|
Предпросмотр
|
|||
---|---|---|---|
#18+
ЦЦа , есть шанс, что сохранённые файлы являюЦЦа structured storage с одним или несколькими потоками презентационных данных (превьюшек в форматах DIB или WMF или EMF). И есть шанс, хотя и с применением примерно таких же средств, но сравнительно малой кровью, их из файла достать. Ну вот что-то вроде этого и хотелось бы.... А нельзя чуть более подробно? Естественно, ничего похожего я ранее не делал. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 07:43 |
|
Предпросмотр
|
|||
---|---|---|---|
#18+
AndrF AndrF, спасибо за наводку! Serg197311, а шансы, оказываеЦЦа, есть . Пробуйте. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 13:02 |
|
Предпросмотр
|
|||
---|---|---|---|
#18+
не получается зарегистрировать oleexp.tlb У меня Win7-64 и офис 2013- 32 Это возможно в такой конфигурации? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 14:21 |
|
Предпросмотр
|
|||
---|---|---|---|
#18+
Serg197311, попробуйте запустить тот же Excel от имени администратора и зарегистрировать .tlb через VBA IDE Меню\Tools\References...\Browse... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 14:50 |
|
Предпросмотр
|
|||
---|---|---|---|
#18+
Excell от имени администратора что то не получается - нет такого пункта в выпадающем меню CATIA от имени админа запустил, CAN'T remove control already in use через cmd.exe от имени админа пытался - не дает ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 15:30 |
|
Предпросмотр
|
|||
---|---|---|---|
#18+
Serg197311 Excell от имени администратора что то не получается - нет такого пункта в выпадающем меню ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 16:03 |
|
Предпросмотр
|
|||
---|---|---|---|
#18+
Не помогло... Could not find registered preview handler for file type. Так может что нибудь подскажете про "путь ниндзя" :) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2019, 09:23 |
|
Предпросмотр
|
|||
---|---|---|---|
#18+
Serg197311 Excell от имени администратора что то не получается - нет такого пункта в выпадающем меню ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2019, 11:10 |
|
Предпросмотр
|
|||
---|---|---|---|
#18+
Serg197311 Не помогло... Could not find registered preview handler for file type. Serg197311 Так может что нибудь подскажете про "путь ниндзя" :) Код: vbnet 1. 2. 3. 4. 5.
0 - да, файл являеЦЦа structured storage, 1 - нет, другое - ошибка. Вообще, глядя на историю формата, начинающуюся в 1980-х, уверенности нет. Тем более там какие-то parts, сборки и т. д. Приложили бы пример данных. И разрядность VBA сообщили. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2019, 11:40 |
|
Предпросмотр
|
|||
---|---|---|---|
#18+
ЦЦа 0 - да, файл являеЦЦа structured storage, 1 - нет, другое - ошибка.. 1(((((( ЦЦа Вообще, глядя на историю формата, начинающуюся в 1980-х, уверенности нет. Тем более там какие-то parts, сборки и т. д. Приложили бы пример данных. И разрядность VBA сообщили. У меня Win7-64 и офис 2013- 32. Сама CATIA - 64 . Файл что-то не хочет цепляться... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2019, 12:27 |
|
Предпросмотр
|
|||
---|---|---|---|
#18+
Serg197311, собственно, с этим файлом всё просто: в нём действительно находиЦЦа превьюшка в формате JPEG. Начинается она, как и положено, с последовательности FF D8 FF E0, а дальше любой вменяемый декодер остановиЦЦа сам. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 17:42 |
|
Предпросмотр
|
|||
---|---|---|---|
#18+
ЦЦа Serg197311, собственно, с этим файлом всё просто: в нём действительно находиЦЦа превьюшка в формате JPEG. Начинается она, как и положено, с последовательности FF D8 FF E0, а дальше любой вменяемый декодер остановиЦЦа сам. Спасибо! очень обнадеживает. Но что это хотя бы примерно может быть за декодер и как с ним из VBA работать? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2019, 08:25 |
|
Предпросмотр
|
|||
---|---|---|---|
#18+
Serg197311, Наиболее традиционные и входящие в состав ОС функции - декодеры графических форматов - OleLoadPicture () и GdipCreateBitmapFromStream (). Если файлы CATIA небольшие и целиком могут быть помещены в оперативную память, проще так и сделать, засунув в динамический байтовый массив, и затем организовать на его основе COM-объект, поддерживающий интерфейс IStream , который потом "скормить" декодеру. Если большие, COM-объект, поддерживающий интерфейс IStream, придёЦЦа сделать самому , а не вызовом одной функции. Короче, легче сделать пример, чем расписывать словами. Но ничего, там я там одно местечко для реализации вам оставил, чтобы жизнь мёдом не казалась :). ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2019, 01:24 |
|
Предпросмотр
|
|||
---|---|---|---|
#18+
ЦЦа, все получилось, спасибо! Один вопрос - на качество картинки как-нибудь повлиять можно? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2019, 08:11 |
|
Предпросмотр
|
|||
---|---|---|---|
#18+
Serg197311, пожалуйста. Что записано, то и показано. Если есть опции со стороны приложения, крутите их. Либо же приводите другой пример. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2019, 08:43 |
|
Предпросмотр
|
|||
---|---|---|---|
#18+
Shocker.Pro Serg197311 не открывая сам файл. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2019, 09:01 |
|
Предпросмотр
|
|||
---|---|---|---|
#18+
Antonariy Shocker.Pro пропущено... это вряд ли - не открывая. А что имеется ввиду под "продегустировать"? Если определить сорт и оценить качество - то вполне можно ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2019, 13:02 |
|
Предпросмотр
|
|||
---|---|---|---|
#18+
Подниму тему. Почему то, довольно часто OleLoadPicture не срабатывает - ошибки нет, картинки нет Код: vbnet 1. 2.
Вот так идет вызов. На входе "oStream" - объект есть, через окно WATCHES - No variables "UBound(bPicData) - LBound(bPicData) + 1"= 194611 "TRUE_BOOL"=1 "IID_IPictureDisp" - отображается, долго писать что именно(да и не надо, позже станет понятно) "LoadPictureFromByteArray"=Nothing На выходе "lResult"=0 "LoadPictureFromByteArray"-отображается, Value=1208288741 В итоге - картинку видно - все ок Далее, другой файл, на входе "oStream" - то же самое "UBound(bPicData) - LBound(bPicData) + 1"= 379068 бывает, что и со значительно большей цифрой картинка есть "TRUE_BOOL"=1 "IID_IPictureDisp" - точно так же ка было выше, без отличий "LoadPictureFromByteArray"=Nothing На выходе "lResult"=0 "LoadPictureFromByteArray"-отображается, Value=-553319427 В итоге - картинка пустая. Где собака порылась? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2021, 15:09 |
|
|
start [/forum/topic.php?fid=60&msg=39900764&tid=2154743]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 152ms |
0 / 0 |