Page 3 of 3
OLE2Viewer - анализ и просмотр структуры файлов OLE2
Posted: Mon 19 Dec, 2016 11:27
by rivitna
OLE2Viewer - анализ и просмотр структуры файлов OLE2
Posted: Thu 16 Mar, 2017 19:34
by HaRT
Latest post of the previous page:
rivitna wrote: такая функциональность необходима
Я затеял обсуждение безотносительно конкретного плагина:
viewtopic.php?p=142987#p142987
OLE2Viewer - анализ и просмотр структуры файлов OLE2
Posted: Thu 16 Mar, 2017 22:44
by HaRT
zg wrote:HaRT wrote: zg, а как бы тогда на панели плагина сделать визуальное отличие „просто файлов“ от „файлов-директорий“?
OPIF_USEATTRHIGHLIGHTING и любой удобный атрибут.
Предлагаю атрибут “Reparse point” — для него частенько уже настроена раскраска, как у директорий (или похожая).
OLE2Viewer - анализ и просмотр структуры файлов OLE2
Posted: Tue 26 Sep, 2017 03:56
by Shtirla
Подскажите как то можно отключить обработку плагина по Enter ? Хотелось бы все таки открывать файлы а не заходить в них, а когда нужно вызывать плагин.
И хотелось бы узнать полный список расширений на который срабатывает плагин.
OLE2Viewer - анализ и просмотр структуры файлов OLE2
Posted: Tue 26 Sep, 2017 13:39
by HaRT
Shtirla wrote: ↑Tue 26 Sep, 2017 03:56открывать файлы а не заходить в них
Эта проблема не специфична для конкретного плагина. Обсуждение тут:
Вместо запуска входим в файл как в архив.
OLE2Viewer - анализ и просмотр структуры файлов OLE2
Posted: Wed 27 Sep, 2017 12:11
by Shtirla
Тем не менее не кажется ли Вам что это правило хорошего тона, задавать обработку поведения в настройках плагина?
Тем более как угадать то все расширения на которых плагин будет срабатывать, если разработчик не указывает таких спецификаций?
Если уж я арклайт с мультиарком подружил (извините с раром работать надо), а в ассоциациях девственная чистота, не поверите. при том плагинов всего больше 70. Не первый десяток лет с фаром то...
По мне так проще тогда загружать этот плагин только когда нужно, но это не верный путь.
Вобщем просьба к разработчику, если сможете - реализовать такой функционал, плагин классный!
OLE2Viewer - анализ и просмотр структуры файлов OLE2
Posted: Sat 14 Oct, 2017 18:48
by rivitna
Shtirla wrote: ↑Tue 26 Sep, 2017 03:56Подскажите как то можно отключить обработку плагина по Enter ? Хотелось бы все таки открывать файлы а не заходить в них, а когда нужно вызывать плагин.
И хотелось бы узнать полный список расширений на который срабатывает плагин.
Shtirla wrote: ↑Wed 27 Sep, 2017 12:11Тем не менее не кажется ли Вам что это правило хорошего тона, задавать обработку поведения в настройках плагина?
Тем более как угадать то все расширения на которых плагин будет срабатывать, если разработчик не указывает таких спецификаций?
Если уж я арклайт с мультиарком подружил (извините с раром работать надо), а в ассоциациях девственная чистота, не поверите. при том плагинов всего больше 70. Не первый десяток лет с фаром то...
По мне так проще тогда загружать этот плагин только когда нужно, но это не верный путь.
Вобщем просьба к разработчику, если сможете - реализовать такой функционал, плагин классный!
В принципе можно сделать плагин так, чтобы заходил в файлы только Ctrl-PgDn, а по Enter опционально. Я, признаться, целевые файлы для плагина сам открываю по Shift-Enter.
Списка расширений нет совсем, потому как нет привязки к расширению: плагин проверяет сигнатуру и поля заголовка OLE2. Если все OK, то открывает.
OLE2Viewer - анализ и просмотр структуры файлов OLE2
Posted: Sat 14 Oct, 2017 19:40
by John Doe
rivitna wrote: ↑Sat 14 Oct, 2017 18:48Списка расширений нет совсем
Иногда полезно иметь настройку списка расширений, потому что в противном случае слишком много плагинов "обнюхивают" каждый файл, что создаёт неприятные задержки.
OLE2Viewer - анализ и просмотр структуры файлов OLE2
Posted: Sat 14 Oct, 2017 19:52
by rivitna
Насчет настройки списка расширений может и справедливо. Расширений файлов Compound File очень много, а расширения может и не быть вовсе
Code: Select all
HANDLE WINAPI AnalyseW(
const struct AnalyseInfo *Info
)
{
if (!Info ||
(Info->StructSize < sizeof(struct AnalyseInfo)) ||
!Info->FileName)
return (HANDLE)0; /* return nullptr; */
// Анализ файла-контейнера
return (HANDLE)AnalyzeStorage(Info->FileName,
Info->Buffer,
Info->BufferSize);
}
int AnalyzeStorage(
const wchar_t *pwszFileName,
const void *buf,
size_t bufSize
)
{
if ((bufSize < 2 * sizeof(uint32_t)) ||
(((uint32_t *)buf)[0] != OLE2_SIGNATURE) ||
(((uint32_t *)buf)[1] != OLE2_VERSION))
return 0;
const PCOMPOUND_FILE_HEADER pFileHeader = (PCOMPOUND_FILE_HEADER)buf;
if (bufSize >= sizeof_through_field(COMPOUND_FILE_HEADER, wSectorShift))
{
if ((pFileHeader->wSectorShift < 0x0009) ||
(pFileHeader->wSectorShift > 0x000C))
return 0;
if (bufSize >= sizeof_through_field(COMPOUND_FILE_HEADER,
wMiniSectorShift))
{
if ((pFileHeader->wMiniSectorShift == 0) ||
(pFileHeader->wMiniSectorShift >= pFileHeader->wSectorShift))
return 0;
}
}
return 1;
}
А насчет "неприятных задержек" все же не соглашусь: сколько их добавит код выше?