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 

Кнопка вкл\выкл "внутренние ассоциации"
Goto page Previous  1, 2, 3 ... 9, 10, 11
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Avada



Joined: 01 Aug 2008
Posts: 10518
Location: Россия, Саратов

Post (Separately) Posted: Fri Apr 23, 2021 15:11    Post subject: Reply with quote

lz57005
...А ваше сообщение, являясь дублем этого, нарушает правила форума. Дублировать информацию не надо ни в разных подфорумах, ни в одном. Про заглавные буквы и точки в правилах тоже говорится. Получите замечание по совокупности достижений.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 1113

Post (Separately) Posted: Fri May 15, 2026 12:19    Post subject: Reply with quote

Не ждали через 5 лет? Smile А тем временем появилось более современное и интегрированное решение данной задачи.

Спасибо пользователю lz57005 за отлов нужных сообщений. Именно благодаря этим сообщениям переключение ассоциаций происходит очень гладко.

Пример из справки плагина Autorun:

 Hidden text

Установка и настройка плагина имеет ряд особенностей и выходит за рамки топика. Что касается последней версии, то

 Hidden text

К скрипту из справки можно добавить функцию для гладкого переключения иконки на панели инструментов. Создается переменная окружения, которая сохраняет путь к иконке в зависимости от состояния секции в ini. Эта переменная окружения прописывается в кнопку в качестве иконки. Пример функции
Code:
Func AssocState()
    Local flt
    IniRead /R flt %COMMANDER_INI% "Associations" "Filter1" ""
    # секция включена
    If flt <> "" Then
       SetEnv ICON_ASSOC "%COMMANDER_PATH%\Icons\Assoc\1.ico"
       Return true
    Endif
    # секция выключена   
    SetEnv ICON_ASSOC "%COMMANDER_PATH%\Icons\Assoc\2.ico"
    Return false
EndFunc

При старте ТС функция AssocState() должна быть один раз вызвана для инициализации текущего состояния. После переключения она вызвается еще раз с посылкой всех сообщений и перерисовкой экрана.
Code:
AssocState()
SendMessage(AUTORUN_TCHANDLE, 11, 0, 0)
SendMessage(AUTORUN_TCHANDLE, 1045, 0, 0)           
SendCommand cm_ReloadBarIcons     
Sleep(10)   
SendMessage(AUTORUN_TCHANDLE, 11, 1, 0)
WinRedraw(1) 

Иконка переключается очень гладко, практически как родная иконка ТС. Отдельный тест переключения иконки
Code:
RegisterCommand 61002 "SwitchTestIcon"

SetEnv ICON_TEST "%COMMANDER_PATH%\Icons\Test\1.ico"

Func SwitchTestIcon()
    Static c = false
    c = (c = false ? true : false)
    If c Then
       # действия при включении
       SetEnv ICON_TEST "%COMMANDER_PATH%\Icons\Test\1.ico"
    Else
       # действия при выключении   
       SetEnv ICON_TEST "%COMMANDER_PATH%\Icons\Test\2.ico"   
    Endif   
    SendMessage(AUTORUN_TCHANDLE, 11, 0, 0)
    SendCommand 2945    # cm_ReloadBarIcons
    Sleep(10)
    SendMessage(AUTORUN_TCHANDLE, 11, 1, 0)
    WinRedraw(1)
EndFunc

Code:
TOTALCMD#BAR#DATA
61002

%ICON_TEST%
Тест переключения иконки

1
-1
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3 ... 9, 10, 11
Page 11 of 11

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group