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 

Autorun
Goto page Previous  1, 2, 3 ... 170, 171, 172 ... 175, 176, 177  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
AkulaBig



Joined: 03 Dec 2008
Posts: 203

Post (Separately) Posted: Sun Feb 09, 2025 22:46    Post subject: Reply with quote

Loopback wrote:
Версия Autorun 2.2.16

Столько полезных изменений. Спасибо, будем тестить.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 658

Post (Separately) Posted: Mon Feb 10, 2025 23:48    Post subject: Reply with quote

Loopback wrote:
Ввиду большого объема внутренних изменений могут возникнуть неожиданные проблемы в любой функции, так что при необходимости будут выпущены хотфиксы.

Проблемы действительно возникли, пришлось разбираться. Пока всё запустилось, но чтобы и другое всё проверить, потребуется больше времени.

DllCall - это, конечно, круто. Ещё бы уметь им пользоваться Very Happy

Можете посмотреть, что не так в этом коде:
 Hidden text

Вроде всё работает, но иногда спотыкается, а иногда и ТС валит.

Ну и с новыми функциями сам Гислер велел:
 Hidden text

Совместимость с vbs-скриптом сохранена.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 203

Post (Separately) Posted: Tue Feb 11, 2025 00:20    Post subject: Reply with quote

Orion9 wrote:
чтобы и другое всё проверить, потребуется больше времени.

Я уже переделал на обновленный TCLANG.
Только что написал новый скрипт на Autorun для переключения секций. Пришлось в инишник добавлять еще одну секцию. Но по другому никак. На нынешний момент Buttonbar.ini переделан. Завтра добью.
Orion9 wrote:
# внутренние ассоциации

Я сначала применил вашу функцию, но потом увидел, что вы еще один процесс запускает. Я так понял у вас эта функция для тестирования. Мне-то пришлось ее полностью переделать. А завтра на новый алгоритм переделаю. И в справке приведен пример с ассоциациями с использованием нового функционала. Но и ваш вариант у меня полностью работал.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1465

Post (Separately) Posted: Tue Feb 11, 2025 12:17    Post subject: Reply with quote

Orion9 wrote:
Вроде всё работает, но иногда спотыкается, а иногда и ТС валит.

Есть две очевидные проблемы:
- память структуры нужно обнулять после создания, если явно не устанавливаются все её члены, иначе там окажется случайный мусор;
- размер структуры 60 - это для 32-битной версии, в x64 должен быть 112.

Как-то так:
 Hidden text


Orion9 wrote:
Ну и с новыми функциями сам Гислер велел:

В подразделе "Конфигурация TC" справочных примеров Flasher добавил пример на эту тему, гляньте, может пригодится.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 658

Post (Separately) Posted: Tue Feb 11, 2025 13:54    Post subject: Reply with quote

Утро, кофе, и нешвейцарский шоколад:

 Hidden text

Вот теперь ближе к тому, как оно должно быть, и это ещё не предел. Чтобы выжать максимум, список нужно дополнительно фильтровать и предварительно назначить на каждую операцию свой подкаталог с рамдомными файлами. Секция в ini может выглядеть так:
Code:
[Random]
Enable=1
Interval=10000
Debug=1
...
WincmdCopyComplete=Chewbacca
WincmdDeleteComplete=Операция Ы
...

Когда услышал звуки Чубаки чуть под стол не закатился. Однозначно рекомендую.
Loopback wrote:
Есть две очевидные проблемы:

Теперь всё работает Smile Для таких дел, разумеется, совсем другой объем знаний требуется. Было бы хорошо пару статеек почитать для начала: найдутся хорошие материалы?
Loopback wrote:
В подразделе "Конфигурация TC" справочных примеров Flasher добавил пример на эту тему, гляньте, может пригодится.

Пригодится-то он пригодится, но сам пример не до конца рабочий. Ранее я уже писал, чем обусловлен вызов окна ассоциаций, вот и автор TCASwitcher тоже был вынужден откатится к тому же и всё по той же причине:
 Hidden text

Я был бы рад отказаться от вызова окна, но пока Ghisler не исправит этот косяк, видимо, не получится. Однако если у вас есть какие-то предложения, буду рад услышать!
AkulaBig wrote:
но потом увидел, что вы еще один процесс запускает. Я так понял у вас эта функция для тестирования.

Нет, функция больше не для тестирования, даже успел имя переменной окружения поменять с %ICON_TEST% на %ICON_ASSOC% Smile А по поводу окна написал выше (если вы имеете в виду строку RunThread AssocWinSynс).

AkulaBig
Кстати, забыл написать. Последнюю сборку ещё не скачивал, но в той, что у меня есть, не вижу хайлайтера от yozhic в AkelPad-е. Вы им не пользуютесь? Имхо, многое теряеете.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 203

Post (Separately) Posted: Tue Feb 11, 2025 15:45    Post subject: Reply with quote

Orion9 wrote:
по поводу окна написал выше (если вы имеете в виду строку RunThread AssocWinSynс).

Не совсем понял, при чем тут TCASwitcher. У меня вроде нет проблем при запуске с отключенными ассоциациями.
 Hidden text
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 658

Post (Separately) Posted: Tue Feb 11, 2025 19:37    Post subject: Reply with quote

Чтобы не откладывать в дальний ящик:

 Sounds.ini

 .aucfg


На каждое событие можно указать отдельный каталог с wav-файлами. Файлы из этого каталога будут проигрываться в случайном порядке только для данного события. Одиночная звёздочка - игнорировать событие. Двойная звёздочка - проигрывать все (*.wav ) файлы для данного события из корневого каталога, включая подкаталоги.

По задумке, нужно создать отдельный каталог типа "Random" (чтобы не трогать существующие каталоги звуковых схем), который будет содержать подкаталоги с именами Copy, Delete, Pack, Search и т.д. В этих подкаталогах можно собирать любые wav-файлы, которые нравятся и не надоедают, и далее использовать для озвучки нужных событий.

Поскольку готовой коллекции wav-файлов у меня пока нет, за основу были взяты файлы из сборки AkulaBig + Чубака (первая версия Copilot, которая не умела говорить, но всё понимала Mr. Green), но можно использовать любые wav-файлы, даже не регистрируя звуковые схемы. Первый простой алгоритм постом выше для этого подойдет. Второй алгоритм уже завязан на ini-файл и его опции. Серьёзных проверок нет: если файлы отсутствуют, они просто не будут проигрываться или меняться в случайном порядке.

AkulaBig wrote:
У меня вроде нет проблем при запуске с отключенными ассоциациями.

Повезло. А у меня не работает, в том плане, что значки на панелях не меняются, если при старте ТС внутренние ассоциации были выключены.
AkulaBig wrote:
Еще-бы понять, про что вы.

Про эту подсветку к файлам Autorun.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 203

Post (Separately) Posted: Tue Feb 11, 2025 21:36    Post subject: Reply with quote

Orion9 wrote:
значки на панелях не меняются, если при старте ТС внутренние ассоциации были выключены

Теперь понял. Да, у меня так-же. TCASwitcher у меня простоял совсем немного времени и я с ним не разбирался. Поэтому не понял вашего намека.
Orion9 wrote:
RunThread AssocWinSynс

Я имею ввиду, что второй поток это слишком. Буду пытаться запихать его в общий поток.
 Hidden text


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

Orion9
У меня ваш скрипт ассоциаций срабатывает только после команды cm_ReloadFileIcons. Я имею ввиду при отключенных ассоциациях. После перезагрузки. Причем не важно, используешь внешний скрипт или новый алгоритм с скриптом Autorun.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 203

Post (Separately) Posted: Wed Feb 12, 2025 07:42    Post subject: Reply with quote

Ну вот так все отлично работает. Теперь надо разобраться, как ShellExec "%COMMANDER_PATH%\Utilities\TCFS2\TCFS2.exe" '/ef "msg(147,0,1302100) msg(1045,0,0)' переписать на Autorun и можно пользоваться.
Code:

# Переключение ассоциаций файлов
# Switching file associations
RegisterCommand 61000 "SwitchAssocState"

Global AssocIniState
# первое выполнение при запуске
# first execution when launching
AssocIniState = AssocState()

Func AssocState()
   Local flt
   IniRead /R flt %COMMANDER_INI% "Associations" "Filter1" ""
   # если в секции что-то есть, значит она включена
   # if there is something in section, then it is turned on
   If flt <> "" Then
      SetEnv AssocIco "%COMMANDER_PATH%\Images\Others\ICO\Light\LightOn.ico"
      Return true
   Else
      SetEnv AssocIco "%COMMANDER_PATH%\Images\Others\ICO\Light\LightOff.ico"
      Return false
   Endif
EndFunc

Func SwitchAssocState(lParam)
   Local ini_Assoc = %COMMANDER_PATH% & "\Ini\Associations.ini"

   Local Sections = List()
   Sections.Text = IniReadSectionNames(%ini_Assoc%)

   If Sections.IndexOf('Associations') > -1 Then
      IniRenameSection(%ini_Assoc%, 'Associations', '-Associations')
   ElseIf Sections.IndexOf('-Associations') > -1 Then
      IniRenameSection(%ini_Assoc%, '-Associations', 'Associations')
   EndIf

   Free(Sections)

   AssocState()

   CommandExec cm_ReloadBarIcons
   
   # Обновляем иконки ассоциированных файлов
   # Update icons of associated files
   ShellExec "%COMMANDER_PATH%\Utilities\TCFS2\TCFS2.exe" '/ef "msg(147,0,1302100) msg(1045,0,0)'
EndFunc


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

Ну все, пишем вместо ShellExec "%COMMANDER_PATH%\Utilities\TCFS2\TCFS2.exe" '/ef "msg(147,0,1302100) msg(1045,0,0)':
Code:

CommandExec cm_ReloadBarIcons
# Обновление внутренних ассоциаций
# Updating internal associations
SendMessage(AUTORUN_TCHANDLE, 1045,0,0)

и все отлично работает. Обратите внимание, что CommandExec cm_ReloadBarIcons после AssocState() не лишний. Иначе будет открываться окно настройки ассоциаций.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 658

Post (Separately) Posted: Wed Feb 12, 2025 12:48    Post subject: Reply with quote

AkulaBig
Ну что тут сказать? Теперь я точно знаю, как я буду дальше жить:
 Hidden text

Спасибо за наводку. Переделал под себя:
 Hidden text

Vbs-скрипт оставлен как альтернативный вариант, поскольку ограничение в 32767 символа у IniRenameSection не такое уж и недостижимое.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 203

Post (Separately) Posted: Wed Feb 12, 2025 13:22    Post subject: Reply with quote

Orion9 wrote:
ограничение в 32767 символа у IniRenameSection не такое уж и недостижимое.

А применение List() не решит проблему? Я пытался сделать через List.Text, но ничего не получилось, так как при командной записи Autorun ругается, что ему нужна переменная нормального формата. А без командной записи никак.
Orion9 wrote:
Vbs-скрипт оставлен как альтернативный вариант

А я просто сборку с внешними скриптами забекапил. Потому что второй раз разобраться с кавычками не реально Smile
Orion9 wrote:
SendMessage(AUTORUN_TCHANDLE, 1045, 0, 0)

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



Joined: 01 Jan 2024
Posts: 658

Post (Separately) Posted: Wed Feb 12, 2025 14:02    Post subject: Reply with quote

AkulaBig wrote:
но ничего не получилось

А я ничего не понял ) Ну, может быть Loopback чего подскажет.
AkulaBig wrote:
А вы не подскажите, что это за команда? Пробовал ее заменить на cm_InternalAssociate. Не прокатывает.

Я так глубоко в систему не лезу. На такие вопросы могут ответить разве что системные разработчики, типа Loopback, либо те, кто давно и плотно сидит в теме автоматизации, типа Flasher. Как я уже говорил, присутствие второго на форуме не помешало бы, но увы - пять лет назад не поделили что-то с админом, а простой народ теперь страдает.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 203

Post (Separately) Posted: Wed Feb 12, 2025 14:14    Post subject: Reply with quote

Orion9 wrote:
А я ничего не понял

Вот мой скрипт переключения секций:
Code:

Func SwitchIniSect(sIni, sSectSource, sSectTarget)
   IniReadSection SwitchSect %"%sIni%" %"%sSectSource%"
   IniWriteSection %"%sIni%" %"%sSectTarget%" %"%SwitchSect%"
EndFunc

А хотелось-бы:
Code:

Func SwitchIniSect(sIni, sSectSource, sSectTarget)
   Local SwitchSect = List()
   IniReadSection SwitchSect.Text %"%sIni%" %"%sSectSource%"
   IniWriteSection %"%sIni%" %"%sSectTarget%" %"%SwitchSect.Text%"
EndFunc

Но не работает так. Мне кажется, что при использовании массива длина секции намного увеличивается. Хотя может я и не прав.
Loopback
Можете прокомментировать мой вопрос?
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2684

Post (Separately) Posted: Wed Feb 12, 2025 14:27    Post subject: Reply with quote

AkulaBig wrote:
А вы не подскажите, что это за команда?

Первоначально на форуме здесь упоминалась...
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 203

Post (Separately) Posted: Wed Feb 12, 2025 15:13    Post subject: Reply with quote

sa wrote:
Первоначально на форуме здесь упоминалась...

Оттуда я ее и взял. Поиском нашел. Хотелось-бы узнать, что это за команда.
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 ... 170, 171, 172 ... 175, 176, 177  Next
Page 171 of 177

 
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