Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: Autorun 
Author Message
Orion9



PostPosted: Tue Jan 21, 2025 14:05    Post subject: Reply with quote

AkulaBig wrote:
Я все-же не пойму, зачем вы Ирфан разбираете по значкам, когда он прекрасно работает с одной строкой.

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

Map-файл на FSView.dll:
 Hidden text

Доработал код и оформил в виде кнопки:
 Hidden text

 Hidden text

Теперь параметрами операции можно управлять через \Ini\IconsMap.ini. Файл должен существовать:
 Hidden text

AkulaBig wrote:
А в моей сборке PotPlayer никогда не будет...а иметь портабельную сборку хочется.

Именно потому, что раньше в ТС не было своего плеера, я прикручивал к нему PotPlayer. Но и сейчас отказываться от этого не буду - уже привык, что он на борту и со всеми внутренними связями и значками. Кстати, у PotPlayer три библиотеки значков. Связав ассоциации, как на примере выше, можно добиться очень интересного эффекта: простым переименованием или заменой PotPlayer.dll - меняются все значки сразу. Помимо этого, интересного эффекта можно добится, если не указывать прямого пути к плееру, а сделать ассоциацию с переменной окружения, например %COMMANDER_VIDEO%. Теперь достаточно в Autorun менять содержимое этой переменной на лету (или только при запуске), чтобы указывать, кто должен открывать эти типы файлов.

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

Раньше у меня была такая ассоциация:
Code:
Filter14=*.dll;*.ocx;*.ax
Filter14_open=""%COMMANDER_EXE%" /S=L:Piclview "%1""
Filter14.icon=*

Но оказывается можно запросто вызывать функцию Autorun по коду:
Code:
Filter14_open=***61005

Это открывает некоторые возможности. Например, можно вызывать действие с клавишей-модификатором:
Code:
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:
 Hidden text

AkulaBig wrote:
Но именно для ПП, лежащей снаружи сборки.

Ну, мне-то проще: не нужно заботится о том, чтобы панель никуда не "уплыла" Smile
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group