Autorun

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

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

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

Сообщение Orion9 »

AkulaBig писал(а):Не переключаюсь. просто к основной панели добавляю ПП
Шутите? )

У вас обычная панель, которая переключается с главной. Единственное отличие - она похожа на главную (основную) панель, поскольку и была создана на её основе.

Кстати, для создания такой панели необязательно было использовать TCIMG, можно было просто скопировать основную панель и переименовать ее в User.bar (например в vbs-скрипте или bat-файле), а затем вызывать её пользовательской командой и накидывать кнопок. На Autorun можно сделать такое через ShellExec:

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

Func CopyFile(Source, Target, Delete = true)
   If Delete Then
      ShellExec /SW_HIDE /WAIT:2000 %COMSPEC% "/c del /f /q ""%Target%"""   
      If FileExist(Target) Then   
         ShowDarkHint("Ошибка удаления " & Target, 0)
         Return false
      Endif
   EndIf   
   ShellExec /SW_HIDE /WAIT:2000 %COMSPEC% '/c copy /y /v "%Source%" "%Target%"'  
   If Not FileExist(Target) Then   
      ShowDarkHint("Ошибка копирования " & Target, 0)
      Return false
   Endif
   Return true
EndFunc
Основная функция может выглядеть так:

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

# Shift + F12
SetHotkeyAction /K:S /H:F12 CopyMainBar

Func CopyMainBar()
   Local main = %COMMANDER_PATH% & "\Bars\Main.bar"
   Local user = "D:\Temp\User.bar"
   If CopyFile(main, user) Then 
      CommandExec("em_open_bar_path", user)
      ShowDarkHint("Панель пользователя загружена")      
   EndIf   
EndFunc
Разумеется, функциональная клавиша здесь только для примера, а пути к файлам необходимо указывать или передавать согласно поставленной задаче.

Кроме этого, сейчас чтобы вернуться на главную панель (т.е. осуществить обратное переключение), вам приходится выходить из ТС, что, на мой взгляд, является еще одним лишним шагом (помимо того, что панель User.bar приходится выбирать вручную в каталоге).

В самом простом варианте можно просто создать две пользовательские команды и повесить их на горячие клавиши: одна для вызова главной панели, другая для вызова User.bar. Но оставим это простым пользователям. Мы с вами в теме "Autorun", где каждый может стать Творцом и Корректором косяков Гислера :mrgreen: Потому и делать мы будем красиво ))

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

# F12
SetHotkeyAction /H:F12 MainUserBar

Global BarNum = 1

Func MainUserBar()
   Local bar, pinned = false
   BarNum += 1
   If BarNum > 2 Then BarNum = 1
   If BarNum = 1 Then
      CommandExec("em_open_bar", "Main.bar") 
      Return     
   Else
      bar = "D:\Temp\User.bar"
      If Not FileExist(bar) Then
         ShowHint("Не найден: " & bar)
          BarNum -= 1
         Return   
      EndIf       
   EndIf
   CommandExec("em_open_bar_path", bar)
   If BarNum = 1 Then Return
   Sleep(750)
   If IsPressed(0x11) Then 
      pinned = true
      ShowDarkHint("Панель пользователя закреплена", 750)
      Return
   EndIf
   Sleep(3000)
   If BarNum = 2 Then RunThread MainUserBar
EndFunc
Цикличное переключение панелей по F12. Пользовательская панель открывается только на 3 секунды, потом сворачивается и дает вернуться главной (удобно, если нужно запустить что-то из личных кнопок всего один раз; интервал можно изменить). Если сразу после открытия пользовательской панели нажать Ctrl, панель закрепится на экране до конца сессии. Если нужно вернуться на главную панель, перезапускать ТС необязательно: достаточно просто еще нажать раз F12 - и всё пойдет по кругу ))

P.S. Это был лишь пример, но вы можете серьезно развить его и адаптировать в своих целях. Можете, например, более продвинутый поиск User.bar сделать по списку, или учесть то, что функция будет запускаться на "чужом" компьютере, где пользователю нужна будет другая панель, или вообще не будет нужна никакая. Вариантов много.

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

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

[em_open_bar]
cmd=OPENBAR
param=%|COMMANDER_PATH|\Bars\%A0

[em_open_bar_path]
cmd=OPENBAR
param=%A0
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Orion9 писал(а):
С колонками пользователя так и не удалось запустить в ТС х64?
Бомбическая задумка. Очень хочется увидеть ее в своей сборке.
А может другим каким-нибудь путем пойти? Через скрипты можно что-то замутить?
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

AkulaBig писал(а):С колонками пользователя так и не удалось запустить в ТС х64?
К сожалению, пока не удалось. Loopback, посмотрел в чём может быть причина: оказалось, это галюны самого TC x64 - он тупо "гасит" подсказку клавишами-модификаторами и не даёт ей появиться.
AkulaBig писал(а):А может другим каким-нибудь путем пойти? Через скрипты можно что-то замутить?
Пока остается только "лочить" её через переменную, что-то другое придумать мне не удалось. Недавно я собирал все скрипты, которые накопились за почти год использования Autorun, среди них есть и тот, что завязан на клоноки:

[cut]--------------------------------------------------
Подсказка в файловых панелях
Добавление информации клавишами-модификаторами
--------------------------------------------------
Ctrl - добавить данные MediaInfo
Ctrl+Shift - добавить данные WDX плагинов
Ctrl+Shift+Alt - добавить данные ExifTool
Ctrl+Shift+Win - добавить данные Accesschk
Ctrl+Win+Alt - добавить данные о правах доступа
Alt - добавить данные кастомных полей
--------------------------------------------------

В некоторых случаях, если комбинация клавиш не срабатывает (или плохо срабатывает), помогает смена порядка при нажатии, например, вместо Ctrl+Shift может заработать Shift+Ctrl. В 64-битной версии Total Commander при вызове подсказки клавиши-модификаторы не работают совсем. Одиночный Alt не работает ни в той, ни в другой версии (проверить работоспособность Alt можно только в экранной клавиатуре). Закрепление комбинаций клавиш хорошо работает в обоих версиях Total Commander.

--------------------------------------------------
Закрепление комбинаций клавиш (Lock)
--------------------------------------------------
CapsLock - закрепить данные MediaInfo
Ctrl+CapsLock - закрепить данные ExifTool
Shift+CapsLock - закрепить данные WDX плагинов
Alt+CapsLock - закрепить данные Accesschk
--------------------------------------------------

Нормальная работа клавиши CapsLock будет нарушена в окне ТС, но не в диалоговых окнах.
Переназначить клавишу CapsLock, как и другие комбинации клавиш, можно в скрипте autorun.cfg.[/cut]
Сборкой TC это, конечно, не назовешь, но для тестов - самый раз. Да и не по силам мне целая сборка. Одно дело "ковыряться" в скриптах в свое удовольствие, находить какие-то интересные решения и делиться ими на форуме, и совсем другое дело - браться за официальную и публичную сборку, которая должна уметь работать в рамках любого сценария использования (разные системы, настройки, пути, права, разрешения экрана, dpi, масштабирование и прочее, прочее, прочее...). Именно поэтому я очень ценю и уважаю труд сборщиков. Какая бы сборка ни была - в ней можно всегда найти что-то интересное.
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Orion9 писал(а):Недавно я собирал все скрипты
Я конечно-же скачал вашу сборку сразу-же. Но в ней тоже ТС х64 не работает. Ладно, будем думать. Мне не обязательно, чтобы через Ctrl инфа MediaInfo открывалась. Но вы-же ранее писали, что даже в функцию Hint входа нет.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

AkulaBig писал(а):Но вы-же ранее писали, что даже в функцию Hint входа нет.
Как выяснилось - есть. Проверить это можно экранной клавиатурой, где все комбинации работают. Autorun тут ни при делах, это очередной глюк TC x64.
AkulaBig писал(а):Мне не обязательно, чтобы через Ctrl инфа MediaInfo открывалась.
Ну, там сейчас не только MediaInfo и прочие консольные утилиты. Главная фишка сейчас - возможность прикрепить к подсказке любые wdx-плагины и их сочетания, что может быть удобным, например, при работе или тестировании скриптов в WinScriptAdv. К тому же, CapsLock всё-таки работает в ТС х64 как-никак, а он бывает гораздо удобнее одиночного вызова с удержанием клавиш-модификаторов. И универсальность MediaInfo тоже сейчас оказалась как никогда кстати, зря я в свое время упрекал автора, что он увлёкся поддержкой слишком большого формата файлов, которые, на первый взгляд, не имеют никакого отношения к аудио и видео.
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Orion9 писал(а):Главная фишка сейчас - возможность прикрепить к подсказке любые wdx-плагины и их сочетания
Дак для этого Autorun не нужен.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

AkulaBig писал(а):Дак для этого Autorun не нужен.
Может, и не нужен, всё зависит от конкретных задач. Кто-то скажет, что ему и подсказка не нужна для для таких дел, и будет в чем-то прав - наборы колонок ведь никто не отменял )

Где-то в середине февраля у меня будет неплохое окно, надо будет собрать все последние скрипты, которые были в теме, и оформить в новый архив. Число строк кода на Autorun перевалило за 5000 :shock: Но там еще надо чистку провести, а тем временем от утилиты TCASwitcher.exe я уже отказался в пользу скриптов )
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Orion9 писал(а):тем временем от утилиты TCASwitcher.exe я уже отказался в пользу скриптов )
А я ей никогда не пользовался :D
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

AkulaBig писал(а):А я ей никогда не пользовался :D
А зачем же она у вас в сборке тогда? :lol:

Шутки шутками, а внутренние ассоциации вполне могут пригодиться. Это классный функционал, но у него есть недостатки: не очень удобный интерфейс и необходимость "прокачки" секции [Associations] для комфортного использования. Мало кто станет делать индивидуальное сопоставление расширений, но только так можно извлечь хоть какую-то пользу.

Вот и у вас в сборке полноценно расставлена только SumatraPDF, а на IrfanView, как я понимаю, вы уже поленились ))

А ведь могли бы сделать что-то вроде:

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

Filter10=*.b3d
Filter10.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,036
Filter10_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter11=*.bmp
Filter11.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,000
Filter11_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter12=*.cam
Filter12.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,001
Filter12_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter13=*.clp
Filter13.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,002
Filter13_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Или перспектива "возиться " руками с десятками расширений вас напугала? ) А как вы хотели? По-другому ведь красиво не бывает - иногда нужно и руками поработать.) Главное не забывать про мудрый совет Николая Степановича "Глаза больших дел боятся, но руки-то делают" :mrgreen: Выпил кружку кофе и вперёд - что там сотни расширений :mrgreen:

Но попробуем пойти другим путём. В IrfanView есть библиотека Icons.dll в папке плагинов, я попробовал сделать на неё "map-файл" для дальнейшего удобства:
[cut]b3d=036
bmp=000
cam=001
clp=002
crw=037
dcm=003
dcx=004
dds=045
djvu=005
ecw=038
emf=006
eps=007
fpx=008
fsh=039
g3=009
gif=010
iff=011
img=012
jng=040
jp2=013
jpg=014
kdk=015
mng=041
nlm=016
pbm=017
pcd=018
pcx=019
pgm=020
png=021
ppm=022
psd=023
psp=024
ras=025
raw=042
rle=026
sff=027
sfw=028
sgi=029
sid=043
tga=030
tiff=031
ttf=044
wbmp=032
wmf=033
xbm=034
xpm=035[/cut]
Тут пока без "фокусов": просто руками сопоставил выгруженные .ico, что заняло буквально несколько минут. Но теперь подключаем Autorun:

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

# Alt + "["
SetHotkeyAction /K:A /V:219 IconMapTest 0

Func IconMapTest(lParam)
   Local map = %COMMANDER_PATH% & "\Icons\IrfanView.map", _
         lib = '%COMMANDER_PATH%\Icons\IrfanView.dll', _
         cmd = '""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""', _
         idx = 10
   AssocIconsMap(map, idx, lib, cmd)
EndFunc

Func AssocIconsMap(MapFile, StartIdx, IconLib, CmdOpen)
   Local out, ext, idx
   If Not FileExist(MapFile) Then    
      ShowHint("Не найден " & MapFile)
      Return
   Endif
   ProcessExecGetOutput out %COMSPEC% '/c type "%MapFile%"'  
   Local aMap = List(), j
   aMap.Text = out
   out = ""
   For j = 0 To aMap.Count - 1
       ext = StrPart(aMap[j], "=", 1)
       idx = StrPart(aMap[j], "=", 2)
       out &= auCRLF & "Filter" & StartIdx + j & "=*." & ext
       out &= auCRLF & "Filter" & StartIdx + j & ".icon=" & IconLib & ","& idx
       out &= auCRLF & "Filter" & StartIdx + j & "_open=" & CmdOpen              
   Next
   ClipPut(out)
   ShowHint("Скопировано в буфер.")
EndFunc
Запускаем скрипт, и получаем в буфере:
[cut]Filter10=*.b3d
Filter10.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,036
Filter10_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter11=*.bmp
Filter11.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,000
Filter11_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter12=*.cam
Filter12.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,001
Filter12_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter13=*.clp
Filter13.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,002
Filter13_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter14=*.crw
Filter14.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,037
Filter14_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter15=*.dcm
Filter15.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,003
Filter15_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter16=*.dcx
Filter16.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,004
Filter16_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter17=*.dds
Filter17.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,045
Filter17_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter18=*.djvu
Filter18.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,005
Filter18_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter19=*.ecw
Filter19.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,038
Filter19_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter20=*.emf
Filter20.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,006
Filter20_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter21=*.eps
Filter21.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,007
Filter21_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter22=*.fpx
Filter22.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,008
Filter22_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter23=*.fsh
Filter23.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,039
Filter23_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter24=*.g3
Filter24.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,009
Filter24_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter25=*.gif
Filter25.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,010
Filter25_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter26=*.iff
Filter26.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,011
Filter26_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter27=*.img
Filter27.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,012
Filter27_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter28=*.jng
Filter28.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,040
Filter28_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter29=*.jp2
Filter29.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,013
Filter29_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter30=*.jpg
Filter30.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,014
Filter30_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter31=*.kdk
Filter31.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,015
Filter31_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter32=*.mng
Filter32.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,041
Filter32_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter33=*.nlm
Filter33.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,016
Filter33_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter34=*.pbm
Filter34.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,017
Filter34_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter35=*.pcd
Filter35.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,018
Filter35_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter36=*.pcx
Filter36.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,019
Filter36_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter37=*.pgm
Filter37.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,020
Filter37_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter38=*.png
Filter38.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,021
Filter38_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter39=*.ppm
Filter39.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,022
Filter39_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter40=*.psd
Filter40.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,023
Filter40_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter41=*.psp
Filter41.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,024
Filter41_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter42=*.ras
Filter42.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,025
Filter42_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter43=*.raw
Filter43.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,042
Filter43_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter44=*.rle
Filter44.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,026
Filter44_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter45=*.sff
Filter45.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,027
Filter45_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter46=*.sfw
Filter46.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,028
Filter46_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter47=*.sgi
Filter47.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,029
Filter47_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter48=*.sid
Filter48.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,043
Filter48_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter49=*.tga
Filter49.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,030
Filter49_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter50=*.tiff
Filter50.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,031
Filter50_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter51=*.ttf
Filter51.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,044
Filter51_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter52=*.wbmp
Filter52.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,032
Filter52_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter53=*.wmf
Filter53.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,033
Filter53_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter54=*.xbm
Filter54.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,034
Filter54_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter55=*.xpm
Filter55.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,035
Filter55_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""[/cut]
Вот это другое дело. Индекс фильтра можно менять, как и команду открытия и путь к библиотеке.

[cut="P.S."]Чешуться руки, конечно, и другие библиотеки "размапить", но всему свое время... И, кстати, в "свое время" на PotPlayer мне пришлось практически всё вручную делать.))[/cut]
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Orion9 писал(а): А зачем же она у вас в сборке тогда? :lol:
Вы меня с кем-то путаете.
Orion9 писал(а): Вот и у вас в сборке полноценно расставлена только SumatraPDF, а на IrfanView, как я понимаю, вы уже поленились ))
Опять вы меня с кем-то путаете. У меня Ирфан и другие полноценно прописаны. Просто для Ирфан не требуется прописка каждого расширения отдельно. Он поддерживает обработку иконок и достаточно расширения прописать гуртом, чтобы Ирфан показывал для каждого свою иконку.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

AkulaBig писал(а):Вы меня с кем-то путаете.
И то правда.) Почему-то был уверен, что вы пользуетесь этой утилитой, да еще и настолько, что проверить не удосужился :? Что ж, признаю свой зашквар - бывает )) Вероятно то, что файл Associations.ini у вас вынесен ридеректом в отдельный каталог совместно с другими ini-файлами, и ввело меня в заблуждение, но это слабое оправдание в данном случае.
AkulaBig писал(а):У меня Ирфан и другие полноценно прописаны.
А зачем вам Ирфан во внутренних ассоциациях, в таком случае? Не то, чтобы я отрицал подобное использование, но мне кажется, вы некоторую путаницу создаете. Допустим, пользователь поставит ACDSee, и все значки у него в ТС будут от ACDSee, а запускаться будет ваш IrfanView. При этом, если пользователь никогда не слышал о внутренних ассоциациях, ему еще изрядно "попарится" придется, прежде чем он настроит всё под себя. Такие утилиты, как TCASwitcher, как раз позволяют в один клик отключить все внутренние ассоциации, а при необходимости - включить их обратно. При этом "внутренние", ИМХО, должны быть именно "внутренними", т.е. со всеми своими значками. Если пользователь, например, установил в систему ACDSee, то при включении внутренних ассоциаций он должен видить значки IrfanView, а при выключении - значки ACDSee. Я себе это так представлял.

Засёк время: ровно 15 минут у меня ушло, чтобы сделать разметку PotPlayer.dll:

[cut]3g2=41
3gp2=42
3gp=28
3gpp=40
aac=63
ac3=62
amr=46
ani.neo=57
ape=64
asf=03
ass=73
asx=04
avi=01
dat=15
divx=02
dmakm=31
dts=67
flac=68
flv=32
idx=75
ifo=17
k3g=29
lmp4=27
m1a=49
m1v=10
m2a=50
m2ts=77
m2v=11
m3u=53
m4a=51
m4b=39
m4p=38
m4v=26
mgv=58
mka=69
mkv=20
mod=65
mov=23
mp2=59
mp2v=37
mp3=60
mp4=25
mpa=48
mpc=66
mpe=12
mpeg=13
mpg=14
mpv2=36
mqv=24
mts=78
mxf=79
ogg=61
ogm=19
pls=54
qt=45
ra=52
ram=43
rm=21
rmvb=22
rpm=44
skm=30
smi=71
srt=72
ssa=74
sub=76
swf=56
tp=16
tpr=35
trp=34
ts=33
vob=18
wav=70
wax=55
wm=05
wma=47
wmp=06
wmv=07
wmx=08
wvx=09[/cut]
Добавим к нему IrfanView:

[cut][Associations]
Filter1=*.3g2
Filter1.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,41
Filter1_open=""%COMMANDER_VIDEO%" "%1""
Filter2=*.3gp2
Filter2.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,42
Filter2_open=""%COMMANDER_VIDEO%" "%1""
Filter3=*.3gp
Filter3.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,28
Filter3_open=""%COMMANDER_VIDEO%" "%1""
Filter4=*.3gpp
Filter4.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,40
Filter4_open=""%COMMANDER_VIDEO%" "%1""
Filter5=*.aac
Filter5.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,63
Filter5_open=""%COMMANDER_VIDEO%" "%1""
Filter6=*.ac3
Filter6.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,62
Filter6_open=""%COMMANDER_VIDEO%" "%1""
Filter7=*.amr
Filter7.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,46
Filter7_open=""%COMMANDER_VIDEO%" "%1""
Filter8=*.ani.neo
Filter8.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,57
Filter8_open=""%COMMANDER_VIDEO%" "%1""
Filter9=*.ape
Filter9.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,64
Filter9_open=""%COMMANDER_VIDEO%" "%1""
Filter10=*.asf
Filter10.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,03
Filter10_open=""%COMMANDER_VIDEO%" "%1""
Filter11=*.ass
Filter11.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,73
Filter11_open=""%COMMANDER_VIDEO%" "%1""
Filter12=*.asx
Filter12.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,04
Filter12_open=""%COMMANDER_VIDEO%" "%1""
Filter13=*.avi
Filter13.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,01
Filter13_open=""%COMMANDER_VIDEO%" "%1""
Filter14=*.dat
Filter14.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,15
Filter14_open=""%COMMANDER_VIDEO%" "%1""
Filter15=*.divx
Filter15.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,02
Filter15_open=""%COMMANDER_VIDEO%" "%1""
Filter16=*.dmakm
Filter16.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,31
Filter16_open=""%COMMANDER_VIDEO%" "%1""
Filter17=*.dts
Filter17.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,67
Filter17_open=""%COMMANDER_VIDEO%" "%1""
Filter18=*.flac
Filter18.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,68
Filter18_open=""%COMMANDER_VIDEO%" "%1""
Filter19=*.flv
Filter19.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,32
Filter19_open=""%COMMANDER_VIDEO%" "%1""
Filter20=*.idx
Filter20.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,75
Filter20_open=""%COMMANDER_VIDEO%" "%1""
Filter21=*.ifo
Filter21.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,17
Filter21_open=""%COMMANDER_VIDEO%" "%1""
Filter22=*.k3g
Filter22.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,29
Filter22_open=""%COMMANDER_VIDEO%" "%1""
Filter23=*.lmp4
Filter23.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,27
Filter23_open=""%COMMANDER_VIDEO%" "%1""
Filter24=*.m1a
Filter24.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,49
Filter24_open=""%COMMANDER_VIDEO%" "%1""
Filter25=*.m1v
Filter25.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,10
Filter25_open=""%COMMANDER_VIDEO%" "%1""
Filter26=*.m2a
Filter26.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,50
Filter26_open=""%COMMANDER_VIDEO%" "%1""
Filter27=*.m2ts
Filter27.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,77
Filter27_open=""%COMMANDER_VIDEO%" "%1""
Filter28=*.m2v
Filter28.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,11
Filter28_open=""%COMMANDER_VIDEO%" "%1""
Filter29=*.m3u
Filter29.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,53
Filter29_open=""%COMMANDER_VIDEO%" "%1""
Filter30=*.m4a
Filter30.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,51
Filter30_open=""%COMMANDER_VIDEO%" "%1""
Filter31=*.m4b
Filter31.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,39
Filter31_open=""%COMMANDER_VIDEO%" "%1""
Filter32=*.m4p
Filter32.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,38
Filter32_open=""%COMMANDER_VIDEO%" "%1""
Filter33=*.m4v
Filter33.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,26
Filter33_open=""%COMMANDER_VIDEO%" "%1""
Filter34=*.mgv
Filter34.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,58
Filter34_open=""%COMMANDER_VIDEO%" "%1""
Filter35=*.mka
Filter35.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,69
Filter35_open=""%COMMANDER_VIDEO%" "%1""
Filter36=*.mkv
Filter36.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,20
Filter36_open=""%COMMANDER_VIDEO%" "%1""
Filter37=*.mod
Filter37.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,65
Filter37_open=""%COMMANDER_VIDEO%" "%1""
Filter38=*.mov
Filter38.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,23
Filter38_open=""%COMMANDER_VIDEO%" "%1""
Filter39=*.mp2
Filter39.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,59
Filter39_open=""%COMMANDER_VIDEO%" "%1""
Filter40=*.mp2v
Filter40.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,37
Filter40_open=""%COMMANDER_VIDEO%" "%1""
Filter41=*.mp3
Filter41.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,60
Filter41_open=""%COMMANDER_VIDEO%" "%1""
Filter42=*.mp4
Filter42.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,25
Filter42_open=""%COMMANDER_VIDEO%" "%1""
Filter43=*.mpa
Filter43.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,48
Filter43_open=""%COMMANDER_VIDEO%" "%1""
Filter44=*.mpc
Filter44.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,66
Filter44_open=""%COMMANDER_VIDEO%" "%1""
Filter45=*.mpe
Filter45.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,12
Filter45_open=""%COMMANDER_VIDEO%" "%1""
Filter46=*.mpeg
Filter46.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,13
Filter46_open=""%COMMANDER_VIDEO%" "%1""
Filter47=*.mpg
Filter47.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,14
Filter47_open=""%COMMANDER_VIDEO%" "%1""
Filter48=*.mpv2
Filter48.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,36
Filter48_open=""%COMMANDER_VIDEO%" "%1""
Filter49=*.mqv
Filter49.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,24
Filter49_open=""%COMMANDER_VIDEO%" "%1""
Filter50=*.mts
Filter50.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,78
Filter50_open=""%COMMANDER_VIDEO%" "%1""
Filter51=*.mxf
Filter51.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,79
Filter51_open=""%COMMANDER_VIDEO%" "%1""
Filter52=*.ogg
Filter52.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,61
Filter52_open=""%COMMANDER_VIDEO%" "%1""
Filter53=*.ogm
Filter53.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,19
Filter53_open=""%COMMANDER_VIDEO%" "%1""
Filter54=*.pls
Filter54.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,54
Filter54_open=""%COMMANDER_VIDEO%" "%1""
Filter55=*.qt
Filter55.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,45
Filter55_open=""%COMMANDER_VIDEO%" "%1""
Filter56=*.ra
Filter56.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,52
Filter56_open=""%COMMANDER_VIDEO%" "%1""
Filter57=*.ram
Filter57.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,43
Filter57_open=""%COMMANDER_VIDEO%" "%1""
Filter58=*.rm
Filter58.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,21
Filter58_open=""%COMMANDER_VIDEO%" "%1""
Filter59=*.rmvb
Filter59.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,22
Filter59_open=""%COMMANDER_VIDEO%" "%1""
Filter60=*.rpm
Filter60.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,44
Filter60_open=""%COMMANDER_VIDEO%" "%1""
Filter61=*.skm
Filter61.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,30
Filter61_open=""%COMMANDER_VIDEO%" "%1""
Filter62=*.smi
Filter62.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,71
Filter62_open=""%COMMANDER_VIDEO%" "%1""
Filter63=*.srt
Filter63.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,72
Filter63_open=""%COMMANDER_VIDEO%" "%1""
Filter64=*.ssa
Filter64.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,74
Filter64_open=""%COMMANDER_VIDEO%" "%1""
Filter65=*.sub
Filter65.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,76
Filter65_open=""%COMMANDER_VIDEO%" "%1""
Filter66=*.swf
Filter66.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,56
Filter66_open=""%COMMANDER_VIDEO%" "%1""
Filter67=*.tp
Filter67.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,16
Filter67_open=""%COMMANDER_VIDEO%" "%1""
Filter68=*.tpr
Filter68.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,35
Filter68_open=""%COMMANDER_VIDEO%" "%1""
Filter69=*.trp
Filter69.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,34
Filter69_open=""%COMMANDER_VIDEO%" "%1""
Filter70=*.ts
Filter70.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,33
Filter70_open=""%COMMANDER_VIDEO%" "%1""
Filter71=*.vob
Filter71.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,18
Filter71_open=""%COMMANDER_VIDEO%" "%1""
Filter72=*.wav
Filter72.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,70
Filter72_open=""%COMMANDER_VIDEO%" "%1""
Filter73=*.wax
Filter73.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,55
Filter73_open=""%COMMANDER_VIDEO%" "%1""
Filter74=*.wm
Filter74.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,05
Filter74_open=""%COMMANDER_VIDEO%" "%1""
Filter75=*.wma
Filter75.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,47
Filter75_open=""%COMMANDER_VIDEO%" "%1""
Filter76=*.wmp
Filter76.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,06
Filter76_open=""%COMMANDER_VIDEO%" "%1""
Filter77=*.wmv
Filter77.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,07
Filter77_open=""%COMMANDER_VIDEO%" "%1""
Filter78=*.wmx
Filter78.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,08
Filter78_open=""%COMMANDER_VIDEO%" "%1""
Filter79=*.wvx
Filter79.icon=%COMMANDER_PATH%\Icons\PotPlayer.dll,09
Filter79_open=""%COMMANDER_VIDEO%" "%1""
Filter80=*.b3d
Filter80.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,036
Filter80_open=""%COMMANDER_VIEWER%" "%1""
Filter81=*.bmp
Filter81.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,000
Filter81_open=""%COMMANDER_VIEWER%" "%1""
Filter82=*.cam
Filter82.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,001
Filter82_open=""%COMMANDER_VIEWER%" "%1""
Filter83=*.clp
Filter83.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,002
Filter83_open=""%COMMANDER_VIEWER%" "%1""
Filter84=*.crw
Filter84.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,037
Filter84_open=""%COMMANDER_VIEWER%" "%1""
Filter85=*.dcm
Filter85.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,003
Filter85_open=""%COMMANDER_VIEWER%" "%1""
Filter86=*.dcx
Filter86.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,004
Filter86_open=""%COMMANDER_VIEWER%" "%1""
Filter87=*.dds
Filter87.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,045
Filter87_open=""%COMMANDER_VIEWER%" "%1""
Filter88=*.djvu
Filter88.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,005
Filter88_open=""%COMMANDER_VIEWER%" "%1""
Filter89=*.ecw
Filter89.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,038
Filter89_open=""%COMMANDER_VIEWER%" "%1""
Filter90=*.emf
Filter90.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,006
Filter90_open=""%COMMANDER_VIEWER%" "%1""
Filter91=*.eps
Filter91.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,007
Filter91_open=""%COMMANDER_VIEWER%" "%1""
Filter92=*.fpx
Filter92.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,008
Filter92_open=""%COMMANDER_VIEWER%" "%1""
Filter93=*.fsh
Filter93.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,039
Filter93_open=""%COMMANDER_VIEWER%" "%1""
Filter94=*.g3
Filter94.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,009
Filter94_open=""%COMMANDER_VIEWER%" "%1""
Filter95=*.gif
Filter95.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,010
Filter95_open=""%COMMANDER_VIEWER%" "%1""
Filter96=*.iff
Filter96.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,011
Filter96_open=""%COMMANDER_VIEWER%" "%1""
Filter97=*.img
Filter97.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,012
Filter97_open=""%COMMANDER_VIEWER%" "%1""
Filter98=*.jng
Filter98.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,040
Filter98_open=""%COMMANDER_VIEWER%" "%1""
Filter99=*.jp2
Filter99.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,013
Filter99_open=""%COMMANDER_VIEWER%" "%1""
Filter100=*.jpg
Filter100.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,014
Filter100_open=""%COMMANDER_VIEWER%" "%1""
Filter101=*.kdk
Filter101.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,015
Filter101_open=""%COMMANDER_VIEWER%" "%1""
Filter102=*.mng
Filter102.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,041
Filter102_open=""%COMMANDER_VIEWER%" "%1""
Filter103=*.nlm
Filter103.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,016
Filter103_open=""%COMMANDER_VIEWER%" "%1""
Filter104=*.pbm
Filter104.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,017
Filter104_open=""%COMMANDER_VIEWER%" "%1""
Filter105=*.pcd
Filter105.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,018
Filter105_open=""%COMMANDER_VIEWER%" "%1""
Filter106=*.pcx
Filter106.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,019
Filter106_open=""%COMMANDER_VIEWER%" "%1""
Filter107=*.pgm
Filter107.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,020
Filter107_open=""%COMMANDER_VIEWER%" "%1""
Filter108=*.png
Filter108.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,021
Filter108_open=""%COMMANDER_VIEWER%" "%1""
Filter109=*.ppm
Filter109.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,022
Filter109_open=""%COMMANDER_VIEWER%" "%1""
Filter110=*.psd
Filter110.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,023
Filter110_open=""%COMMANDER_VIEWER%" "%1""
Filter111=*.psp
Filter111.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,024
Filter111_open=""%COMMANDER_VIEWER%" "%1""
Filter112=*.ras
Filter112.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,025
Filter112_open=""%COMMANDER_VIEWER%" "%1""
Filter113=*.raw
Filter113.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,042
Filter113_open=""%COMMANDER_VIEWER%" "%1""
Filter114=*.rle
Filter114.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,026
Filter114_open=""%COMMANDER_VIEWER%" "%1""
Filter115=*.sff
Filter115.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,027
Filter115_open=""%COMMANDER_VIEWER%" "%1""
Filter116=*.sfw
Filter116.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,028
Filter116_open=""%COMMANDER_VIEWER%" "%1""
Filter117=*.sgi
Filter117.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,029
Filter117_open=""%COMMANDER_VIEWER%" "%1""
Filter118=*.sid
Filter118.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,043
Filter118_open=""%COMMANDER_VIEWER%" "%1""
Filter119=*.tga
Filter119.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,030
Filter119_open=""%COMMANDER_VIEWER%" "%1""
Filter120=*.tiff
Filter120.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,031
Filter120_open=""%COMMANDER_VIEWER%" "%1""
Filter121=*.ttf
Filter121.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,044
Filter121_open=""%COMMANDER_VIEWER%" "%1""
Filter122=*.wbmp
Filter122.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,032
Filter122_open=""%COMMANDER_VIEWER%" "%1""
Filter123=*.wmf
Filter123.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,033
Filter123_open=""%COMMANDER_VIEWER%" "%1""
Filter124=*.xbm
Filter124.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,034
Filter124_open=""%COMMANDER_VIEWER%" "%1""
Filter125=*.xpm
Filter125.icon=%COMMANDER_PATH%\Icons\IrfanView.dll,035
Filter125_open=""%COMMANDER_VIEWER%" "%1""[/cut]
Полученный файл можно сохранить в Associations.ini и опробовать на чистом Тотале (пути к библиотекам, конечно, должны быть правильными). На чистом ТС всё влёт подхватилось и корректно отображается. Теперь можно просто запустить TCASwitcher прямо из каталога и посмотреть, как отключаются и включаются иконки, а вместе с ними и ассоциации.

P.S. Кстати, мне понравилась ваша идея с панелью пользователя и добавлением в "хвост" основной панели дополнительных кнопок. Хочу найти ей применение в своем ТС, поэтому изменил чуть-чуть предыдущий пример, но все-равно он пока еще в режиме тестов:
[cut]

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

# Shift + F12
SetHotkeyAction /K:S /H:F12 MainUserBar

Global BarNum = 1, BarPinned = false

Func MainUserBar()
   Local bar, i   
   BarNum += 1
   If BarNum > 2 Then BarNum = 1
   If BarNum = 1 Then
      BarPinned = false 
      CommandExec("em_open_bar", "Main.bar") 
      Return     
   Else
      bar = "D:\Temp\User.bar"
      If Not FileExist(bar) Then
         ShowHint("Не найден: " & bar)
          BarNum -= 1
         Return   
      EndIf       
   EndIf
   CommandExec("em_open_bar_path", bar)
   For i = 1 to 30
       If IsPressed(0x11) Then Break
       Sleep(25)
   Next    
   If IsPressed(0x11) Then 
      BarPinned = true
      ShowDarkHint("Панель пользователя закреплена", 750)
      Return
   EndIf
   Sleep(2500)
   If BarNum = 2 And BarPinned = false Then MainUserBar           
EndFunc
[/cut]
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Orion9 писал(а): Допустим, пользователь поставит ACDSee, и все значки у него в ТС будут от ACDSee, а запускаться будет ваш IrfanView.
Просто я об этом не думал. Я-то внешние ассоциации делаю на Ирфан и другие прожки внутри сборки. На которых основаны мои плагины. И казалось-бы зачем пользователю моей сборки устанавливать ACDSee. Но может быть вы и правы. Кто-то ведь пользуется сборками с 10-ю браузерами. Подумаю.
Orion9 писал(а): Добавим к нему IrfanView:
Я все-же не пойму, зачем вы Ирфан разбираете по значкам, когда он прекрасно работает с одной строкой.
Orion9 писал(а): Засёк время: ровно 15 минут у меня ушло, чтобы сделать разметку PotPlayer.dll:
Для меня внутренние - это которые находятся внутри моей сборки. А в моей сборке PotPlayer никогда не будет. Над MPC еще как-то можно подумать. Кстати, я еще немного разобрался с ним. Оказывается в него кодеки вшиты, даже если еще и наружные LAV-фильтры используются. Вот найти-бы проигрыватель, который полностью-бы можно было натравить на внешние кодеки, причем в портабельном режиме. А то делать масло масляное совершенно не хочется, а иметь портабельную сборку хочется. А плеер ТС только LAV подключает.
Orion9 писал(а): P.S. Кстати, мне понравилась ваша идея с панелью пользователя и добавлением в "хвост" основной панели дополнительных кнопок.
Вообще идея отключения ее без перезагрузки не лишена смысла. Но именно для ПП, лежащей снаружи сборки. То-есть не стандартная подмена одной панели другой. Но с этим есть проблемы. Так что надо думать, как это сделать.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

AkulaBig писал(а):Я все-же не пойму, зачем вы Ирфан разбираете по значкам, когда он прекрасно работает с одной строкой.
Плюсы такого разбора очевидны: каждый значок можно индивидуально назначить. Мне, например, не нравятся некоторые "салатовые" значки IrfanView, поэтому значительная часть значков у меня берется из других библиотек, например из FSView.dll или той же ACDSee.dll. Конечно, такое сопоставление придется делать вручную, но зато на панелях ТС будут только те значки, которые вам нравятся. Более того, при простом копировании папки ТС, именно благодаря тому, что все значки и ассоциации выстроены "внутренне", всё будет работать и отображаться так, как вы привыкли, даже на чистой Windows, где нет никаких просмотрщиков и другого установленного софта.

Map-файл на FSView.dll:
[cut]arw=18
bmp=00
cr2=01
crw=02
dwg=14
gif=03
jpg=04
mrw=15
nef=05
orf=12
pcx=06
pef=16
png=07
psd=08
raf=13
rw2=19
srf=17
tga=09
tif=10
wmf=11[/cut]
Доработал код и оформил в виде кнопки:
[cut]

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

Func IconMap(lParam)
    Local map, lib, cmd, idx = 0
    Local cfg = %COMMANDER_PATH% & "\Ini\IconsMap.ini"

    If Not FileExist(cfg) Then    
       ShowHint("Не найден " & cfg)
       Return
    Endif
    
    If IsPressed(0x10) Then
       CommandExec /CD:S %cfg%
       Return
    Endif    
        
    If Not IsPressed(0x11) Then 
       ShellExec "%cfg%"
       Return
    EndIf   
    
    IniRead map %cfg% "Config" "MapFile"   
    IniRead lib %cfg% "Config" "IconLib"   
    IniRead cmd %cfg% "Config" "CmdOpen"   
    IniRead idx %cfg% "Config" "Index" 1
    
    If Not FileExist(map) Then    
       ShowHint("Не найден " & map)
       Return
    Endif
                                     
    AssocIconsMap(map, idx, lib, cmd)
EndFunc

Func AssocIconsMap(MapFile, StartIdx, IconLib, CmdOpen)
    Local out, ext, idx
    ProcessExecGetOutput out %COMSPEC% '/c type "%MapFile%"'  
    Local aMap = List(), j
    aMap.Text = out
    out = ""
    For j = 0 To aMap.Count - 1
        ext = StrPart(aMap[j], "=", 1)
        idx = StrPart(aMap[j], "=", 2)
        out &= auCRLF & "Filter" & StartIdx + j & "=*." & ext
        out &= auCRLF & "Filter" & StartIdx + j & ".icon=" & IconLib & ","& idx
        out &= auCRLF & "Filter" & StartIdx + j & "_open=" & CmdOpen              
    Next
    ClipPut(out)
    ShowHint("Скопировано в буфер.")
EndFunc
[/cut]
[cut]

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

TOTALCMD#BAR#DATA
61004

%COMMANDER_EXE%
Создание [Associations]|Ctrl - Создание новых ключей

1
-1
[/cut]
Теперь параметрами операции можно управлять через \Ini\IconsMap.ini. Файл должен существовать:
[cut]

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

[Config]
MapFile=%COMMANDER_PATH%\Icons\PotPlayer.map
IconLib=%COMMANDER_PATH%\Icons\PotPlayer.dll
;MapFile=%COMMANDER_PATH%\Icons\IrfanView.map
;IconLib=%COMMANDER_PATH%\Icons\IrfanView.dll
Index=80
;CmdOpen=""%COMMANDER_VIEWER%" "%1""
CmdOpen=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
[/cut]
AkulaBig писал(а):А в моей сборке PotPlayer никогда не будет...а иметь портабельную сборку хочется.
Именно потому, что раньше в ТС не было своего плеера, я прикручивал к нему PotPlayer. Но и сейчас отказываться от этого не буду - уже привык, что он на борту и со всеми внутренними связями и значками. Кстати, у PotPlayer три библиотеки значков. Связав ассоциации, как на примере выше, можно добиться очень интересного эффекта: простым переименованием или заменой PotPlayer.dll - меняются все значки сразу. Помимо этого, интересного эффекта можно добится, если не указывать прямого пути к плееру, а сделать ассоциацию с переменной окружения, например %COMMANDER_VIDEO%. Теперь достаточно в Autorun менять содержимое этой переменной на лету (или только при запуске), чтобы указывать, кто должен открывать эти типы файлов.

Еще один шикарный эффект. Из справочника по ключам:
Russian.cedf писал(а):Команда ***имя_внутренней_команды позволяет выполнить для файла указанного типа заданную встроенную или пользовательскую команду TC, в т.ч. с параметрами (в последнем случае указывается не только имя команды, но и соответствующий параметр или их набор, причём параметры, содержащие запятую, должны быть взяты в двойные кавычки). Внутренние команды, не начинающиеся с префикса cm_ или em, не требуют при назначении начальных звёздочек (примеры: OPENTABS %1% для TAB-файла, OPENBARMENU %1% для BAR-файла), также для них поддерживаются во внутренних ассоциациях шаблоны-параметры наподобие %P%N.
Раньше у меня была такая ассоциация:

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

Filter14=*.dll;*.ocx;*.ax
Filter14_open=""%COMMANDER_EXE%" /S=L:Piclview "%1""
Filter14.icon=*
Но оказывается можно запросто вызывать функцию Autorun по коду:

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

Filter14_open=***61005
Это открывает некоторые возможности. Например, можно вызывать действие с клавишей-модификатором:

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

RegisterCommand 61005 "AssocDllOpenCmd"

Func AssocDllOpenCmd(lParam)
    If IsPressed(0x5B) Then 
       ShowHint("Win")
       Return
    EndIf
    If IsPressed(0x10) Then 
       IconsPanel()
    Else
       #SendCommand cm_List
       p = RequestCopyDataInfo("SP")
       n = RequestCopyDataInfo("SN")
       f = p & n
       ShellExec %COMMANDER_EXE% '/S=L:Piclview "%f%""'       
    EndIf
EndFunc
Здесь с зажатым Shift вызывается функция IconsPanel, которая загружает иконки на главную панель, а простой вызов запускает Листер, предподчительно с просмотром иконок, если он есть. Функция IconsPanel:
[cut]

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

RegisterCommand 62005 "IconsPanel"

Func IconsPanel(Silent = 0)
     Local p, n, f, hint, icons
     
     p = RequestCopyDataInfo("SP")
     n = RequestCopyDataInfo("SN")
     f = p & n
     
     If Not FileExist(f) Then 
        ShowHint("Файл не существует " & f)
        Return 
     Endif
     
     If StrPos(FileGetAttr(f), "D") Then
        ShowHint("Каталог")
        Return 
     Endif
    
    obj = Plugin("IconLibrary")
    If ERROR = 0 then
       obj.FileName = f
       icons = obj.GetValue(0)
       If icons > 0 then
          hint = "Иконок: " & icons
          CreateIconsBar(f, icons)
       Else
          hint = "Нет иконок"
       Endif
       hint &=  & auCRLF & "Файл " & f
       Free(obj)
    Else
       hint = "Plugin Error " & ERROR
    Endif
       
    If icons = 0 Then ShowHint(hint)
EndFunc

Func CreateIconsBar(FileName, Icons)    
    Local p = BarsPath
    Local n = "Auto_icons"
    Local bar = p & n & ".bar", i = 0
    
    ShowDarkHint("Загрузка иконок", 0)
    
    If Not CreateNewBar(p, n) Then
       ShowDarkHint("Отмена операции", 0)
       Return 
    EndIf
    
    For i = 2 to Icons+1
        IniWrite %bar% "Buttonbar" %"'Cmd'  & %i%" "100000"
        IniWrite %bar% "Buttonbar" %"'Menu' & %i%"   %"%i%-2"
        IniWrite %bar% "Buttonbar" %"'Button' & %i%" %"%FileName% & ','& %i%-2"      
    Next
    
    IniWrite %bar% "Buttonbar" "Buttoncount"  %"%Icons%+1"    
    ShowDarkHint("Панель." & auCRLF & i-1 & " кнопок создано.", 0)       
    CommandExec("em_open_icons_panel")
EndFunc
[/cut]
AkulaBig писал(а):Но именно для ПП, лежащей снаружи сборки.
Ну, мне-то проще: не нужно заботится о том, чтобы панель никуда не "уплыла" :)
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Orion9 писал(а):
ТС подкинул очередной сюрприз. CustomFields не обновляются по отработанной схеме. Только через перезагрузку. Пробовал обновить панели командой cm_RereadSource. Не помогает. Нет-ли у вас каких-нибудь соображений по этому поводу?
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

AkulaBig писал(а):ТС подкинул очередной сюрприз.
Это он умеет ))

А если попробовать команды:

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

cm_LeftNextCustomView
cm_LeftPrevCustomView

cm_RightNextCustomView
cm_RightPrevCustomView
Есть шанс, что простимулируют коммандера :D

P.S.

Автономный код кнопки для загрузки иконок на главную панель (предыдущий был завязан на другие модули):
[cut="autorun.cfg"]

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

RegisterCommand 62005 "IconsPanel"

Global BarsPath = %COMMANDER_PATH% & "\Bars"

Func IconsPanel(Silent = 0)
     Local p, n, f, hint, icons
     
     p = RequestCopyDataInfo("SP")
     n = RequestCopyDataInfo("SN")
     f = p & n
     
     If Not FileExist(f) Then 
        ShowHint("Файл не существует " & f)
        Return 
     Endif
     
     If StrPos(FileGetAttr(f), "D") Then
        ShowHint("Каталог")
        Return 
     Endif
    
    obj = Plugin("IconLibrary")
    If ERROR = 0 then
       obj.FileName = f
       icons = obj.GetValue(0)
       If icons > 0 then
          hint = "Иконок: " & icons
          CreateIconsBar(f, icons)
       Else
          hint = "Нет иконок"
       Endif
       hint &=  & auCRLF & "Файл " & f
       Free(obj)
    Else
       hint = "Plugin Error " & ERROR
    Endif
       
    If icons = 0 Then ShowHint(hint)
EndFunc

Func CreateIconsBar(FileName, Icons)    
    Local p = BarsPath
    Local n = "Auto_icons"
    Local bar = p & n & ".bar", i = 0
    
    ShowDarkHint("Загрузка иконок", 0)
    
    If Not CreateNewBar(p, n) Then
       ShowDarkHint("Отмена операции", 0)
       Return 
    EndIf
    
    For i = 2 to Icons+1
        IniWrite %bar% "Buttonbar" %"'Cmd'  & %i%" "100000"
        IniWrite %bar% "Buttonbar" %"'Menu' & %i%"   %"%i%-2"
        IniWrite %bar% "Buttonbar" %"'Button' & %i%" %"%FileName% & ','& %i%-2"      
    Next
    
    IniWrite %bar% "Buttonbar" "Buttoncount"  %"%Icons%+1"    
    ShowDarkHint("Панель иконок:" & auCRLF & i-1 & " кнопок создано.", 0)       
    CommandExec("em_open_icons_panel")
EndFunc

Func ShowDarkHint(DarkHint, HintSleep = 1000)
    # формат подсказки
    SetHintParam("ShowHint", "Font", 10, "Arial")
    SetHintParam("ShowHint", "BackColor", 0x001C1C1C)
    SetHintParam("ShowHint", "Text", 0xFFFFFF)   
   
    ShowHint(DarkHint)
    
    If HintSleep > 0 Then 
       Sleep(HintSleep)
       WinSetState(23)
    Else
       Sleep(100)   
    Endif   
    SetHintParam("ShowHint", "Reload")   
EndFunc

# создание новой панели (путь, имя, кнопка возврата)
Func CreateNewBar(BarPath, BarName, BackButton = true) 
    Local bar, br2, def
    
    bar = BarPath & BarName & ".bar"
    br2 = BarPath & BarName & ".br2"   
    
    ShellExec /SW_HIDE /WAIT:2000 %COMSPEC% "/c del /f /q ""%bar%"""
    ShellExec /SW_HIDE /WAIT:2000 %COMSPEC% "/c del /f /q ""%br2%"""
    
    If FileExist(bar) Then   
       ShowDarkHint("Ошибка удаления " & bar, 0)
       Return false
    Endif
     
    IniWrite %bar% "Buttonbar" "Buttoncount"  "0"
    If ERROR = 1 Then 
       ShowDarkHint("Ошибка создания " & bar, 0)
       Return false
    EndIf
    
    IniRead def %COMMANDER_INI% "Buttonbar" "Buttonbar" "%COMMANDER_PATH%\DEFAULT.BAR"   
    
    If BackButton Then
       IniWrite %bar% "Buttonbar" "Button1" "wcmicons.dll,15"
       IniWrite %bar% "Buttonbar" "Cmd1" %def%
       IniWrite %bar% "Buttonbar" "Menu1" "Вернуться"
    Endif
      
   Return true
EndFunc
[/cut]
[cut="usercmd.ini"]

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

[em_open_icons_panel]
cmd=OPENBAR1
param=%|COMMANDER_PATH|\Bars\Auto_icons.bar
[/cut]
[cut="Кнопка"]

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

TOTALCMD#BAR#DATA
62005

Wcmicons.dll
Загрузить иконки на панель


-1
[/cut]
Загрузил себе на панель все 1259 иконок из библиотеки VIM вашей коллекции - Тотал чуть не загнулся. Т.ч. не только он может подкидывать нам сюрпризы, но и мы ему :mrgreen:
Ответить