PE Viewer 3.0

Обсуждение только плагинов и утилит для Total Commander.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

iteg
А ведь необязательно загружать библиотеку в окно плагина, можно и отдельным процессом запустить, так даже лучше получается, и вам будет проще.

Сделал, вот, скрипт на скорую руку, посмотреть, что получается. Вроде ничего так.

Код: Выделить всё

#Requires AutoHotkey v2

#SingleInstance Force

#HotIf WinActive("peviewer ahk_class TLister") and    
       InStr(ControlGetClassNN(ControlGetFocus("A")),"TListView") > 0

~LButton::
{
    If (A_ThisHotkey = A_PriorHotkey and A_TimeSincePriorHotkey < 200)
        FileInfo
}

FileInfo()
{

   if StrLen(EnvGet("COMMANDER_EXE")) = 0
   {
      MsgBox "Переменная %COMMANDER_EXE% не определена",, "Iconx"
      Return
   }
   A_Clipboard := ""
   
   Send "^c"
   Sleep(100)
   
   if !ClipWait(1)
   {
       MsgBox "Текст не скопирован в буфер"
       return
   }
   
   if InStr(A_Clipboard, '\') = 0
      Return
      
   f:=name:=''
   Loop Parse, A_Clipboard, ","
      {
        if A_Index = 1
           name:= Trim(A_LoopField)
        if (A_Index = 3)
           f:=Trim(A_LoopField)
      }
      f:= f . name
      f:=StrReplace(f, '`r`n','')
      if not InStr(FileExist(f),'D')
         Run EnvGet("COMMANDER_EXE") ' /S=L:Ppeviewer ' f
      else
         msgbox f  
}
yahuu
Сообщения: 40
Зарегистрирован: Чт июн 22, 2023 07:32

Сообщение yahuu »

BlackFox писал(а):
yahuu писал(а):4. It prompts that the file is occupied and cannot be deleted.
using this plugin hundreds times a day since last 2 months - never had such a problem. Not reproducible.
Check whether you have some antivirus that check every opened file.
А вообще-то форум русскоязычный - используйте онлайн переводчики.
Thank you, it was indeed caused by antivirus software
iteg
Сообщения: 116
Зарегистрирован: Чт дек 01, 2011 17:01

Сообщение iteg »

BlackFox
1)
BlackFox писал(а):сделать показ наличия OLE-интерфейса (наличие экспортных функций DLLRegisterServer / DLLUnregisterServer)
Так при наличии ресурса TypeLib (маркер "COM (TYPELIB)" на Info уже сделан) предполагается COM-интерфейс и наличие функций DLLRegisterServer / DLLUnregisterServer. Или это не так? Если есть примеры файлов, то выложите.
2)
BlackFox писал(а):в FileInfo при просмотре библиотеки с ActiveX в спец. вкладке показывалось расшифрованное значение TypeLib
Разбор TypeLib уже запланировал.
3)
BlackFox писал(а):Разнобой встречается в осн. в полях "Language" и "Character Set/Code Page".
Доработаю.

Добавлено спустя 8 минут:

Orion9
А ведь необязательно загружать библиотеку в окно плагина, можно и отдельным процессом запустить, так даже лучше получается, и вам будет проще.
Спасибо за скрипт. Про параметры /S=L:P не знал. Уже реализовал. Только через запуск TC в новом процессе. Через команду cm_List не смог найти способ, как передать путь к файлу, открывает только текущий файл под курсором.
Вот тестовый вариант: https://dropmefiles.com/tO7W2
По остальным предложениям - в процессе реализации.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

iteg писал(а):Вот тестовый вариант: https://dropmefiles.com/tO7W2
Практически 🔥Только почему комбинация Ctrl+O? Разве двойной клик не лучше бы был?

Еще один момен по визуальной части. Заметил, что свойства "Подтип файла" и "Атрибуты файла" практически всегда бывают пустыми, что оставляет зиять довольно большое пространство. Думаю, что для стройности структуры вывода, лучше писать туда затененный текст, типа <Отсутствует>, <Нет информации> или что-то в этом роде. Но это надо посмотреть, как оно в действительности будет выглядеть. Но в любом случае, большое пустое пространство тоже не очень смотрится.

Ох, чуть не забыл.
Только через запуск TC в новом процессе. Через команду cm_List не смог найти способ, как передать путь к файлу, открывает только текущий файл под курсором.
Пусть отдельным процессом - так даже лучше, имхо.
iteg
Сообщения: 116
Зарегистрирован: Чт дек 01, 2011 17:01

Сообщение iteg »

Orion9
Orion9 писал(а):Разве двойной клик не лучше бы был?
Двойной клик уже занят под копирование содержимого ячейки в буфер обмена для списочного компонента. Ctrl+O (Open).
свойства "Подтип файла" и "Атрибуты файла" практически всегда бывают пустыми
Да, у большинства программ уже не проставляются данные свойства. Доработаю вывод, как целое число и описание.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

Двойной клик уже занят под копирование содержимого ячейки в буфер обмена для списочного компонента. Ctrl+O (Open).
Но ведь двойной клик - это стандартный вход в объект по курсором в Windows. Каждый пользователь это знает и ожидает получить в окне приложения, особенно там, где это напрашивается. И на мой взглад, здесь это тоже напрашивается :)
iteg
Сообщения: 116
Зарегистрирован: Чт дек 01, 2011 17:01

Сообщение iteg »

Тестовый вариант с изменениями:
- формата "Тип файла", "Подтип файла", "Атрибуты файла" и "Целевая ОС".
- использовать чередование строк для ListView из меню настроек.
- пока изменил на Space для "Открыть в плагине". Посмотрю, как совместить двойной клик.
https://dropmefiles.com/ueFr1
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

iteg
Ну, это уже лучше! :) Хотя на счет зебры не уверен, но поля "Тип файла", "Подтип файла", "Атрибуты файла" и "Целевая ОС" смотрятся гораздо лучше.

Пробел весьма удобен, т.ч. даже не знаю, стоит ли заморачиваться с двойным кликом. Можно и так оставить, имхо.

Когда я говорил про подсветку, я больше имел в виду расцветку. Конечно, это дело очень индивидуальное, но попробовать стоит.

Вот пара мыслей. Всю информацию, которая не представляет большого интереса и важности можно затенить. (шрифтом, который менее выделяется). Сюда входит - пустые поля (с нулевым значением), повторяющиеся поля (с одинаковым значением), даты создания и открытия файла, хэши и, возможно, что-то еще. При этом, если значения повторяются, то одно значение должно, конечно, выделяться, как и дата изменения файла. Важные поля (Название продукта, Название компании и т.д), напротив, можно и красить и выделять жирным, но тут главное не перестараться. На поле "Язык" можно повесить флаги, можно и другие значки придумать - главное, чтобы красиво смотрелось. В общем, пробуйте, эксперементируйте, фантазируйте! И не беспокойтесь, что может плохо получиться. Если что, мы вам всегда скажем.)
Аватара пользователя
BlackFox
Сообщения: 75
Зарегистрирован: Сб дек 18, 2004 04:33
Откуда: Mayence

Сообщение BlackFox »

iteg писал(а): 1) при наличии ресурса TypeLib (маркер "COM (TYPELIB)" на Info уже сделан) предполагается COM-интерфейс и наличие функций DLLRegisterServer / DLLUnregisterServer. Или это не так? Если есть примеры файлов, то выложите.
для COM обязателен Typelib (и это показывается уже сейчас, да), для OLE - нет. Пример - любой DirectShow фильтр: там всегда есть функции

Код: Выделить всё

DllCanUnloadNow
DllGetClassObject
DllRegisterServer
DllUnregisterServer
но это не СОМ объект и, соотв, не имеет TypeLib. Поэтому хотелось бы такие случаи тоже сразу видеть, не залезая во вкладку экспорта.
iteg писал(а): 2) Разбор TypeLib уже запланировал.
Ок. ждём.
iteg писал(а): 3) Доработаю.
Аналогично 2 ;)

Добавлено спустя 13 минут:
iteg писал(а):Тестовый вариант с изменениями:
- пока изменил на Space для "Открыть в плагине". Посмотрю, как совместить двойной клик.
я сначала интуитивно пытался нажать F3 на этих DLL - как из тотала вызывается этот плагин, так же и ещё раз его вызывать для дальнейших действий. Не?
iteg
Сообщения: 116
Зарегистрирован: Чт дек 01, 2011 17:01

Сообщение iteg »

BlackFox
1) Добавление маркера для OLE реализовал по наличию в экспорте функций DllRegisterServer и DllUnregisterServer.
2) Доработал вывод полей LanguageName и CodePageName.

Orion9
Про расцветку - пометил в ToDo.

Т.к. до релиза очень далеко, то тестовые сборки буду выкладывать здесь.
Реализовал новый функционал для VirusTotal. Смотрите настройки главного меню. Параметры применяются при следующем запуске приложения.
(-/-) - статус значит, что данных о файле с указанным хешем на virustotal нет.
(BR) - Bad request.
https://dropmefiles.com/xNZKl
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

(-/-) - статус значит, что данных о файле с указанным хешем на virustotal нет.
(BR) - Bad request.
Что-то я не совсем понял, где это должно отображаться. А с вызовом меню по F3 вы хорошо придумали.)
Аватара пользователя
BlackFox
Сообщения: 75
Зарегистрирован: Сб дек 18, 2004 04:33
Откуда: Mayence

Сообщение BlackFox »

Orion9 писал(а):Что-то я не совсем понял, где это должно отображаться.
в начале строки virustotal. Только это надо включить в настройках (у меня само было включено): Settings -> VirusTotal -> Get file status
iteg
Сообщения: 116
Зарегистрирован: Чт дек 01, 2011 17:01

Сообщение iteg »

Orion9
Что-то я не совсем понял, где это должно отображаться.
По умолчанию опция включена. Результат отображается в начале ссылки virustotal, если успешно получен ответ.

Тестовая версия 3.0.13.5:
- на вкладке 'CLR Header' отображается список установленных '.Net Framework' в системе.
https://dropmefiles.com/v7TSH
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

BlackFox
iteg
Да вроде стояла у меня эта галочка, только никаких отличий не заметил. Вот в галочке Use Old Link отличие в ссылке вижу. И интернет сейчас специально отрубал, а изменений в статусе не вижу.
Аватара пользователя
BlackFox
Сообщения: 75
Зарегистрирован: Сб дек 18, 2004 04:33
Откуда: Mayence

Сообщение BlackFox »

ИзображениеИзображение
это с первой настройкой.
А у вас что показывается?

@iteg
детект OLE работает, хексы в значениях языков - тоже. Спасибо!
Ответить