OLE2Viewer - анализ и просмотр структуры файлов OLE2

Здесь можно обсудить ваш любимый плагин.
rivitna
Posts: 33
Joined: Wed 30 Nov, 2016 10:58
Has thanked: 1 time
Been thanked: 2 times

OLE2Viewer - анализ и просмотр структуры файлов OLE2

Post by rivitna » Mon 19 Dec, 2016 11:27

Обсуждение плагина OLE2Viewer

User avatar
HaRT
Moderator
Posts: 8108
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 103 times

OLE2Viewer - анализ и просмотр структуры файлов OLE2

Post by HaRT » Thu 16 Mar, 2017 19:34

Latest post of the previous page:

rivitna wrote: такая функциональность необходима
Я затеял обсуждение безотносительно конкретного плагина: https://forum.farmanager.com/viewtopic. ... 87#p142987
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
HaRT
Moderator
Posts: 8108
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 103 times

OLE2Viewer - анализ и просмотр структуры файлов OLE2

Post by HaRT » Thu 16 Mar, 2017 22:44

zg wrote:
HaRT wrote: zg, а как бы тогда на панели плагина сделать визуальное отличие „просто файлов“ от „файлов-директорий“?
OPIF_USEATTRHIGHLIGHTING и любой удобный атрибут.
Предлагаю атрибут “Reparse point” — для него частенько уже настроена раскраска, как у директорий (или похожая).
Фар есть инструмент, а не нянька. © 2009 DrKnS

Shtirla
Posts: 58
Joined: Wed 04 Mar, 2009 20:09
Has thanked: 1 time

OLE2Viewer - анализ и просмотр структуры файлов OLE2

Post by Shtirla » Tue 26 Sep, 2017 03:56

Подскажите как то можно отключить обработку плагина по Enter ? Хотелось бы все таки открывать файлы а не заходить в них, а когда нужно вызывать плагин.
И хотелось бы узнать полный список расширений на который срабатывает плагин.

User avatar
HaRT
Moderator
Posts: 8108
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 103 times

OLE2Viewer - анализ и просмотр структуры файлов OLE2

Post by HaRT » Tue 26 Sep, 2017 13:39

Shtirla wrote:
Tue 26 Sep, 2017 03:56
открывать файлы а не заходить в них
Эта проблема не специфична для конкретного плагина. Обсуждение тут: Вместо запуска входим в файл как в архив.
Фар есть инструмент, а не нянька. © 2009 DrKnS

Shtirla
Posts: 58
Joined: Wed 04 Mar, 2009 20:09
Has thanked: 1 time

OLE2Viewer - анализ и просмотр структуры файлов OLE2

Post by Shtirla » Wed 27 Sep, 2017 12:11

Тем не менее не кажется ли Вам что это правило хорошего тона, задавать обработку поведения в настройках плагина?
Тем более как угадать то все расширения на которых плагин будет срабатывать, если разработчик не указывает таких спецификаций?
Если уж я арклайт с мультиарком подружил (извините с раром работать надо), а в ассоциациях девственная чистота, не поверите. при том плагинов всего больше 70. Не первый десяток лет с фаром то...
По мне так проще тогда загружать этот плагин только когда нужно, но это не верный путь.

Вобщем просьба к разработчику, если сможете - реализовать такой функционал, плагин классный!

rivitna
Posts: 33
Joined: Wed 30 Nov, 2016 10:58
Has thanked: 1 time
Been thanked: 2 times

OLE2Viewer - анализ и просмотр структуры файлов OLE2

Post by rivitna » Sat 14 Oct, 2017 18:48

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, то открывает.

User avatar
John Doe
Бюрократ
Posts: 11387
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 16 times
Been thanked: 100 times

OLE2Viewer - анализ и просмотр структуры файлов OLE2

Post by John Doe » Sat 14 Oct, 2017 19:40

rivitna wrote:
Sat 14 Oct, 2017 18:48
Списка расширений нет совсем
Иногда полезно иметь настройку списка расширений, потому что в противном случае слишком много плагинов "обнюхивают" каждый файл, что создаёт неприятные задержки.

rivitna
Posts: 33
Joined: Wed 30 Nov, 2016 10:58
Has thanked: 1 time
Been thanked: 2 times

OLE2Viewer - анализ и просмотр структуры файлов OLE2

Post by rivitna » Sat 14 Oct, 2017 19:52

Насчет настройки списка расширений может и справедливо. Расширений файлов 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;
}
А насчет "неприятных задержек" все же не соглашусь: сколько их добавит код выше?
Last edited by rivitna on Sat 14 Oct, 2017 19:52, edited 1 time in total.

Post Reply

Return to “Обсуждение плагинов”