Autorun

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

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

AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

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

Сообщение Orion9 »

AkulaBig писал(а):При этом язык колонок меняется. А вот описание не меняется.
Если Тотал один раз считывает ключ Titles из секции [CustomFields] и больше не перечитывает его в ходе своей работы, то всё - "труба". Это и есть то самое "страшное", что должно было рано или поздно случиться, и то почему так нужна команда повторного перечитывания всей конфигурации. Иначе придется просить Гислера каждый раз, чтобы он добавлял всё новые и новые команды для перечитывания тех или иных секций по мере возникающих потребностей, как это было сделано с расцветкой или перечитыванием значков, похоже.
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Orion9 писал(а):так нужна команда повторного перечитывания всей конфигурации.
Ну он-же ответил, что такую команду сделать невозможно.
Многие его просили.
Orion9 писал(а):Если Тотал один раз считывает ключ Titles из секции [CustomFields] и больше не перечитывает его в ходе своей работы, то всё - "труба".
Вот найти-бы место, где он хранит эти названия. Никакие изменения названий колонок в инишнике не отражаются. При этом при переключении на английский и редактирования колонок. Эти русские названия записываются в английскую секцию.
Собственно алгоритм меняется только в плане, что придется делать перезагрузку. Я так и думал, что этим закончится. Конечно теперь можно изменить алгоритм и заменять значения в винкмд.ини. Но я оставлю уже отработанный алгоритм.
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

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

Сообщение Orion9 »

AkulaBig писал(а):Ну он-же ответил, что такую команду сделать невозможно.
Многие его просили.
Прямо-таки невозможно?

Как говорила Сара Коннор: "Пока есть процессор, память и система ввода-вывода — возможно всё." :mrgreen:

Другое дело, если код слишком запутан и никогда не предусматривал своего повторения, тогда и ломать придется всё под корень, чего Гислер, разумеется, делать не будет.
AkulaBig писал(а):Я так и думал, что этим закончится... Но я оставлю уже отработанный алгоритм.
Ничего страшного не случилось. Стандартные наборы колонок язык меняют, а значит и шансы есть, что переключение никогда не произойдет во время пользовательских колонок. А цикл, который у вас крутится, все-равно вам еще пригодится.
AkulaBig писал(а):Сделал перезагрузку ТС при смене языка. Можете посмотреть, что получилось.
Посмотрю при первой возможности. Но использовать диалог, имхо, очень хорошее решение. Однако если вы используете MsgBox для этого, то, к сожалению, нужно помнить, что она не всегда срабатывает в TC x64. Сам с таким сталкивался.

P.s. А еще можно попробовать следить за наборами колонок, т.е. проверять их при переключении: если на панелях нет пользовательских наборов, можно и не запрашивать перезагрузку.
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Orion9 писал(а):если вы используете MsgBox для этого, то, к сожалению, нужно помнить, что она не всегда срабатывает в TC x64. Сам с таким сталкивался.
Я думал имеется ввиду, что если он срабатывает в данном коде, то будет срабатывать всегда. То-есть есть вероятность, что он то сработает, то не сработает? А чем тогда MsgBox можно заменить? Я ведь задействовал его ответы.
Orion9 писал(а):еще можно попробовать следить за наборами колонок, т.е. проверять их при переключении: если на панелях нет пользовательских наборов, можно и не запрашивать перезагрузку.
Основная проблема не в колонках. Их хоть и криво, но обновить можно. А вот список колонок никак не обновишь. Да и далее надо будет и утильки переключать и т.д. Так что к необходимости перезагрузки я давно был готов. Просто пока получалось без этого, не задействовал перезагрузку.
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Как чувствовал, что подведет меня этот vbs. Помимо того, что его движок не установлен в оськах типа PE, он еще и юникод не поддерживает. А для использования сборки ТС в английской Винде требуется перекодировать инишники и т.д. в юникод, чтобы не показывало крякозябры. Так что, как я ранее писал, не самый плохой вариант таскать движок с собой. Буду переделывать на au3. Ну а потом может буду экзешники делать. Нормальное решение вопроса.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

AkulaBig писал(а):Я думал имеется ввиду, что если он срабатывает в данном коде, то будет срабатывать всегда.
Да, я тоже так думал (и всё ещё думаю), но лучше уточнить у Loopback. Просто я ТС х64 не часто использую, чтобы можно было сказать с уверенностью.
AkulaBig писал(а):А чем тогда MsgBox можно заменить?
Наверное, вызовом из AutoIt. Но зачем спешить — ведь всё работает. Я у себя тоже проверил.
AkulaBig писал(а):Основная проблема не в колонках.
Моя ошибка. Речь действительно шла о названиях наборов и пунктах меню, а не о колонках. Вообще, довольно курьёзно смотрится, когда часть меню на русском, а часть на английском, но Гислера понять можно. Всё, что вводит пользователь и сохраняет в ТС через диалоговые окна, делается на одном языке, поэтому при переключении на другой язык, данным взяться больше неоткуда — они остаются "как есть". Выход один — делать дополнительный языковой файл и хранить в нём данные пользователя, начиная от меню "Запуск" и заканчивая наборами колонок. А пользователь пусть сам следить за содержимым этих файлов.
AkulaBig писал(а):Как чувствовал, что подведет меня этот vbs.
Да ладно, зато размялись неплохо )) И скрипт теперь лежит у меня в коллекции и даже полезную роль выполняет.) Кстати, заметил, что вы добавили TCASwitcher к сборке. На мой взгляд, лучше стало. Главное ведь, ничего не пострадало и не потерялось, наоборот — пользователь приобрел возможность переключать ассоциации. Почему бы и дальше не развить эту тему и "дожать" IrfanView?
[cut="Associations.ini"][Associations]
Filter1=*.bar
Filter1_open=""%COMMANDER_PATH%\Utilities\TCIMG\TCIMG.exe" "tcprm=OPENBAR %1""
Filter2=*.wdx;*.wdx64;
Filter2_open=""%COMMANDER_PATH%\Utilities\TCPlugman\Plugman.exe" "%1""
Filter2.icon=%COMMANDER_PATH%\Images\Others\ICO\wdx.ico
Filter3=*.wcx;*.wcx64;
Filter3_open=""%COMMANDER_PATH%\Utilities\TCPlugman\Plugman.exe" "%1""
Filter3.icon=%COMMANDER_PATH%\Images\Others\ICO\wcx.ico
Filter4=*.wfx;*.wfx64;
Filter4_open=""%COMMANDER_PATH%\Utilities\TCPlugman\Plugman.exe" "%1""
Filter4.icon=%COMMANDER_PATH%\Images\Others\ICO\wfx.ico
Filter5=*.wlx;*.wlx64;
Filter5_open=""%COMMANDER_PATH%\Utilities\TCPlugman\Plugman.exe" "%1""
Filter5.icon=%COMMANDER_PATH%\Images\Others\ICO\wlx.ico
Filter6=*.ICO;
Filter6_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter6.icon=%1
Filter7=*.CMF;*.KAR;*.MID;*.MIDI;*.MIZ;*.RMI;*.669;*.AMF;*.FAR;*.IT;*.ITZ;*.MDZ;*.MOD;*.MTM;*.NST;*.OKT;*.PTM;*.S3M;*.S3Z;*.STM;*.STZ;*.ULT;*.XM;*.XMZ
Filter7_open=""%COMMANDER_PATH%\Plugins\wlx\TC1by1\1by1\1by1.exe" "%1""
Filter8=*.AI;*.AZW;*.AZW3;*.FB2Z;*.FBZ;*.CB7;*.CBT;*.CBZ;*.CBR;*.KF8;*.PRC;*.TCR;*.ZFB2;
Filter8_open=""%COMMANDER_PATH%\Plugins\wlx\TCSumatraPDF\SumatraPDF\SumatraPDF.exe" "%1""
Filter8.icon=%1
Filter9=*.DJV;
Filter9_open=""%COMMANDER_PATH%\Plugins\wlx\TCSumatraPDF\SumatraPDF\SumatraPDF.exe" "%1""
Filter9.icon=%COMMANDER_PATH%\Plugins\wlx\TCSumatraPDF\Icons.dll,0
Filter10=*.EPUB;
Filter10_open=""%COMMANDER_PATH%\Plugins\wlx\TCSumatraPDF\SumatraPDF\SumatraPDF.exe" "%1""
Filter10.icon=%COMMANDER_PATH%\Plugins\wlx\TCSumatraPDF\Icons.dll,1
Filter11=*.MOBI;
Filter11_open=""%COMMANDER_PATH%\Plugins\wlx\TCSumatraPDF\SumatraPDF\SumatraPDF.exe" "%1""
Filter11.icon=%COMMANDER_PATH%\Plugins\wlx\TCSumatraPDF\Icons.dll,2
Filter12=*.FB2;
Filter12_open=""%COMMANDER_PATH%\Plugins\wlx\TCSumatraPDF\SumatraPDF\SumatraPDF.exe" "%1""
Filter12.icon=%COMMANDER_PATH%\Plugins\wlx\TCSumatraPDF\Icons.dll,3
Filter13=*.DJVU;
Filter13_open=""%COMMANDER_PATH%\Plugins\wlx\TCSumatraPDF\SumatraPDF\SumatraPDF.exe" "%1""
Filter13.icon=%COMMANDER_PATH%\Plugins\wlx\TCSumatraPDF\Icons.dll,4
Filter14=*.PDF;
Filter14_open=""%COMMANDER_PATH%\Plugins\wlx\TCSumatraPDF\SumatraPDF\SumatraPDF.exe" "%1""
Filter14.icon=%COMMANDER_PATH%\Plugins\wlx\TCSumatraPDF\Icons.dll,5
Filter15=*.XPS;
Filter15_open=""%COMMANDER_PATH%\Plugins\wlx\TCSumatraPDF\SumatraPDF\SumatraPDF.exe" "%1""
Filter15.icon=%COMMANDER_PATH%\Plugins\wlx\TCSumatraPDF\Icons.dll,8
Filter16=*.CHM;
Filter16_open=""%COMMANDER_PATH%\Plugins\wlx\TCSumatraPDF\SumatraPDF\SumatraPDF.exe" "%1""
Filter16.icon=%COMMANDER_PATH%\Plugins\wlx\TCSumatraPDF\Icons.dll,9
Filter17=*.PDB;
Filter17_open=""%COMMANDER_PATH%\Plugins\wlx\TCSumatraPDF\SumatraPDF\SumatraPDF.exe" "%1""
Filter17.icon=%COMMANDER_PATH%\Plugins\wlx\TCSumatraPDF\Icons.dll,10
Filter18=*.AMS;*.DBM;*.DMF;*.DSM;*.MDL;*.MOL;*.MED;*.PSM;*.UMX;*.WOW;
Filter18_open=""%COMMANDER_PATH%\Plugins\wlx\TCModPlug\ModPlug\MODPLUG.EXE" "%1""
Filter19=*.b3d
Filter19.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,036
Filter19_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter20=*.bmp
Filter20.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,000
Filter20_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter21=*.cam
Filter21.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,001
Filter21_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter22=*.clp
Filter22.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,002
Filter22_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter23=*.crw
Filter23.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,037
Filter23_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter24=*.dcm
Filter24.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,003
Filter24_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter25=*.dcx
Filter25.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,004
Filter25_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter26=*.dds
Filter26.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,045
Filter26_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter27=*.djvu
Filter27.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,005
Filter27_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter28=*.ecw
Filter28.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,038
Filter28_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter29=*.emf
Filter29.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,006
Filter29_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter30=*.eps
Filter30.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,007
Filter30_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter31=*.fpx
Filter31.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,008
Filter31_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter32=*.fsh
Filter32.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,039
Filter32_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter33=*.g3
Filter33.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,009
Filter33_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter34=*.gif
Filter34.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,010
Filter34_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter35=*.iff
Filter35.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,011
Filter35_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter36=*.img
Filter36.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,012
Filter36_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter37=*.jng
Filter37.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,040
Filter37_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter38=*.jp2
Filter38.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,013
Filter38_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter39=*.jpg
Filter39.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,014
Filter39_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter40=*.kdk
Filter40.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,015
Filter40_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter41=*.mng
Filter41.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,041
Filter41_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter42=*.nlm
Filter42.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,016
Filter42_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter43=*.pbm
Filter43.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,017
Filter43_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter44=*.pcd
Filter44.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,018
Filter44_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter45=*.pcx
Filter45.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,019
Filter45_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter46=*.pgm
Filter46.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,020
Filter46_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter47=*.png
Filter47.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,021
Filter47_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter48=*.ppm
Filter48.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,022
Filter48_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter49=*.psd
Filter49.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,023
Filter49_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter50=*.psp
Filter50.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,024
Filter50_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter51=*.ras
Filter51.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,025
Filter51_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter52=*.raw
Filter52.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,042
Filter52_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter53=*.rle
Filter53.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,026
Filter53_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter54=*.sff
Filter54.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,027
Filter54_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter55=*.sfw
Filter55.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,028
Filter55_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter56=*.sgi
Filter56.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,029
Filter56_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter57=*.sid
Filter57.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,043
Filter57_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter58=*.tga
Filter58.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,030
Filter58_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter59=*.tiff
Filter59.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,031
Filter59_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter60=*.ttf
Filter60.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,044
Filter60_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter61=*.wbmp
Filter61.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,032
Filter61_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter62=*.wmf
Filter62.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,033
Filter62_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter63=*.xbm
Filter63.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,034
Filter63_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter64=*.xpm
Filter64.icon=%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll,035
Filter64_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter65=*.ACR;*.ANI;*.AVIF;*.ARW;*.AWD;*.B3D;*.BMP;*.CDR;*.CLP;*.CRW;*.CR2;*.CR3;*.CRW;*.CUR;*.DCM;*.DCR;*.DDS;*.DCX;*.DIB;*.DNG;*.ECW;*.EMF;*.ERF;*.EXR;*.FPX;*.G3;*.GIF;*.HDP;*.HEIC;*.ICS;*.IFF;*.IMA;*.IMG;*.IW44;*.J2K;*.JFIF;*.JPC;*.JP2;*.JPE;*.JPEG;*.JPF;*.JPG;*.JPM;*.JLS;*.JNG;*.JXL;*.JXR;*.KDC;*.LBM;*.MNG;*.MOS;*.MPO;*.MRC;*.MRW;*.MSK;*.NEF;*.OFR;*.PBM;*.PCD;*.PCX;*.PDN;*.PEF;*.PGM;*.PNG;*.PPM;*.PSD;*.PSB;*.PSP;*.RAF;*.RAS;*.RAW;*.RGB;*.RLE;*.RW2;*.RWL;*.SFF;*.SGI;*.SID;*.SRF;*.SRW;*.SUN;*.SVG;*.TIF;*.TIFF;*.TGA;*.WBMP;*.WEBP;*.WDP;*.WMF;*.WPG;*.WSQ;*.X3F;*.XBM;*.XCF;*.XPM;*.XR;*.EPS;*.PFB;*.PRN;*.PS
Filter65_open=""%COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\i_view32.exe" "%1""
Filter65.icon=%1
[/cut]
Попробуйте такой вариант, может "зайдет".) В случае чего, к старому всегда можете вернуться. Но такие "портабельные" ассоциации очень хорошо смотрятся на различных РЕ и чистых Windows, когда все значки и связи в ТС остаются на месте.
AkulaBig писал(а): Помимо того, что его движок не установлен в оськах типа PE, он еще и юникод не поддерживает.
Может, я чего-то не понимаю, но как это не поддерживает? Если vbs-файл сохранить в UTF-16, то юникодные символы в MsgBox отображаются нормально:

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

MsgBox "Michel Teló - Ai Se Eu Te Pego", vbOKOnly, "Unicode"
[cut="P.S."]Там у вас, кажется, забавная опечатка получилась с "preload", или это так задумано? [/cut]
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Orion9 писал(а): Наверное, вызовом из AutoIt.
Это понятно. Но тогда придется писать кучу кода, заменяющего отслеживание нажатия клавиш MsgBox. Сейчас-то я в Autorun это делаю и очень удобно. В общем пока работает, трогать не буду.
Orion9 писал(а): И скрипт теперь лежит у меня в коллекции и даже полезную роль выполняет.)
Теперь еще и на au3 можете в архив добавить. Будет тоже самое делать :) Я решил не делать экзешники. Так что скрипт в текстовом виде выложен.
Orion9 писал(а): заметил, что вы добавили TCASwitcher к сборке. На мой взгляд, лучше стало.
Ну вы объяснили, для чего это надо. Я согласился. Периодически я добавляю, что кто-нибудь просит, хотя сам я этим не пользуюсь. Главное, чтобы это не жирное было. Я ведь разобрался до конца с MPC и с его клоном. Оказывается даже при наличии возможности подключения внешних кодеков, в них все-равно есть вшитые кодеки. Соответственно надо смотреть, можно-ли на внешние LAV натравить внутренний плеер ТС. Тогда можно подумать о плагине. А так не мой вариант, делать масло масляным.
Orion9 писал(а): Почему бы и дальше не развить эту тему и "дожать" IrfanView?
Я чего-то не понимаю, что-ли? У меня ведь и так у расширений, поддерживаемых Ирфаном разные иконки для каждого файла. Зачем ассоциировать каждое расширение отдельно?
Orion9 писал(а): Но такие "портабельные" ассоциации очень хорошо смотрятся на различных РЕ и чистых Windows, когда все значки и связи в ТС остаются на месте.
Хм, у меня так и сделано. Чего-то я недопонимаю.
Orion9 писал(а): Может, я чего-то не понимаю, но как это не поддерживает? Если vbs-файл сохранить в UTF-16, то юникодные символы в MsgBox отображаются нормально
А теперь перекодируйте DirMenu.ini в юникод (иначе на англоязычной Винде будут крякозябры) и попробуйте обработать его скриптом на vbs. Увидите, что получится. То-есть vbs не работает с юникодными файлами. Это важно. Кстати, если вы скачали сборку, в которой еще нет скрипта на au3, выложите под кат DirMenu.ini, если не трудно. Я при написании скрипта на au3 испортил его. Восстановил, но возможно не полностью.
Orion9 писал(а): Там у вас, кажется, забавная опечатка получилась с "preload", или это так задумано?
Опечатка. Потому что на русском написано "презагрузить". Букву пропустил. Заметил, что странный перевод, но не до него было.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

AkulaBig писал(а):Но тогда придется писать кучу кода, заменяющего отслеживание нажатия клавиш MsgBox.
Имелось в виду, что можно перезагрузить процесс ТС из самого AutoIt-скрипта, но согласен, что:
AkulaBig писал(а):Сейчас-то я в Autorun это делаю и очень удобно.
Из самого Autorun это гораздо удобнее.
AkulaBig писал(а):Теперь еще и на au3 можете в архив добавить.
Посмотрим )
AkulaBig писал(а):Я ведь разобрался до конца с MPC
Я затронул эту тему только потому, что по ошибке подумал, что MPC-BE это что-то "небольшое, портабельное и то, что работает на внешних LAV-кодеках". Поскольку Гислер занялся своим плеером, который к счастью у него не так много места занимает, но которому также требуются внешние LAV-кодеки для обеспечения портабельности, то я и подумал, что альтернатива в виде плагина MPC-BE была бы достаточно интересной и перспективной идеей, а может быть даже и полноценной заменой внутреннему плееру. Ведь есть хороший плагин MMedia, которым я, кстати, до сих пор пользуюсь, но он уже "как бы" устарел и завязан на системные кодеки, а хотелось бы чего-то такого же, но только портабельного. В принципе, размер тут не помеха (каталог MPC-BE занимает ~ 40Mb), но кто станет считать лишние мегабайты, если вопрос заключается в полной работоспособности и полной портабельности. Кстати, сделал разметку mpciconlib.dll от MPC-BE, если кому-то будет интересно попробовать:
[cut]3g2=003
3gp2=005
3gp=004
3gpp=006
aac=007
ac3=008
aif=009
aifc=010
aiff=011
alac=012
amr=013
amv=014
aob=015
ape=016
apl=017
asf=018
au=019
audio=002
avi=020
bik=021
cda=022
divx=024
dsa=025
dsm=026
dss=027
dsv=028
dts=029
evo=030
f4v=031
flac=032
flc=033
fli=034
flic=035
flv=036
hdm=037
ifo=038
ivf=039
m1a=040
m1v=041
m2a=042
m2p=043
m2t=044
m2ts=045
m2v=046
m4a=047
m4b=048
m4v=049
mid=050
midi=051
mka=052
mkv=053
mov=055
mp2=056
mp2v=057
mp3=058
mp4=059
mp4v=060
mpa=061
mpc-be=000
mpc-be=023
mpc-be=087
mpc=062
mpe=063
mpeg=064
mpg=065
mpl=054
mpv2=066
mpv4=067
mts=068
ofr=069
ofs=070
oga=071
ogg=072
ogm=073
ogv=074
opus=105
pls=075
pva=076
ra=077
ram=078
ratd=079
rec=080
rm=081
rmi=082
rmm=083
roq=084
rp=085
rt=086
smil=088
smk=089
snd=090
swf=091
tak=092
tp=093
trp=094
ts=095
tta=096
video=001
vob=097
wav=098
webm=099
wma=101
wmp=102
wmv=103
wv=100
wv=104[/cut]
AkulaBig писал(а):У меня ведь и так у расширений, поддерживаемых Ирфаном разные иконки для каждого файла. Зачем ассоциировать каждое расширение отдельно?
У вас разные иконки, потому что ассоциации прописаны в системе. Если извлечь папку TotalCommanderPortable из вашего установщика на "голую" систему, никаких иконок IrfanView там, конечно, не будет. Можете провести такой тест: подмените файл %COMMANDER_PATH%\Plugins\wlx\TCIrfanView\IrfanView\Plugins\Icons.dll на любой другой, содержащий иконки, и посмотрите, как переключаются внутренние и внешние ассоциации. А еще лучше - скопируйте библиотеку Icons.dll в другое место и поменяйте к ней путь в файле Associations.ini из предыдущего поста - тогда вы точно увидете разницу.
AkulaBig писал(а):А теперь перекодируйте DirMenu.ini в юникод
Всё зависит от кодировки. Например, UTF-8 работать не будет, но UTF-16 LE должна:
https://script-coding.com/WSH/FileSyste ... .html#3.24.
Соответственно, в коде надо будет тоже это учитывать:

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

Text = CreateObject("Scripting.FileSystemObject").OpenTextFile(ini, 1, false, -1).ReadAll

With CreateObject("Scripting.FileSystemObject")
	.OpenTextFile(ini, 2,, -1).Write Text
	.OpenTextFile(ini, 1,, -1).Close
End With
Заморочисто всё как-то получается: это учитывать надо, то учитывать надо...
AkulaBig писал(а):Кстати, если вы скачали сборку, в которой еще нет скрипта на au3, выложите под кат DirMenu.ini, если не трудно.
Не совсем понял, что нужно, но вот весь подкаталог на всякий случай:
[cut]<del>[/cut]
Удалю, как он вам перестанет быть нужным.
Последний раз редактировалось Orion9 Сб янв 25, 2025 18:58, всего редактировалось 1 раз.
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Orion9 писал(а):Имелось в виду, что можно перезагрузить процесс ТС из самого AutoIt-скрипта
Это все понятно. Но загонять перезагрузку в скрипт смены языка не самое красивое решение. Значит придется писать скрипт-прослойку между Autorun и скриптом смены языка. Жутко все это некрасиво.
Orion9 писал(а): У вас разные иконки, потому что ассоциации прописаны в системе. Если извлечь папку TotalCommanderPortable из вашего установщика на "голую" систему, никаких иконок IrfanView там, конечно, не будет.
Теперь понял. Вы не изучали настройки Ирфана. Я вам выше писал, что в Ирфан встроена поддержка библиотеки иконок. Icons.dll является плагином Ирфана. И, скорей всего, будет работать любая с таким-же название и содержанием. Конечно если у Ирфана нет проверки на легальность. Так что иконки у меня именно на внутренних ассоциациях и будут отображаться на любой системе. Что неоднократно проверено.
Orion9 писал(а): Всё зависит от кодировки. OpenTextFile(ini, 1, false, -1)
Не изучил внимательно параметры OpenTextFile. Действительно работает.
Orion9 писал(а): Удалю, как он вам перестанет быть нужным.
Спасибо. Можно удалять.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

AkulaBig писал(а):Теперь понял. Вы не изучали настройки Ирфана.
Настроек Ирфана я действительно не изучал, отрицать не стану. Но распаковав вашу сборку, никакие значки у меня не сопоставились (что было ожидаемо), не смотря на то, что внутренняя ассоциация открывает именно IrfanView, а не системное приложение. Переключение внутренних и внешних ассоциаций, в таком случае, переключает только связи, не значки. Но если сделать полное сопоставление значков в секции [Associations], то переключаться будут и связи, и значки. Хотя я ещё поизучаю этот вопрос, когда найду время. А пока еще одна эксперементальная кнопка:
[cut]

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

Global DirVbs  = %COMMANDER_PATH% & "\Scripts\Vbs"
Global ExeAkel = %COMMANDER_PATH% & "\Utilites\AkelPad\AkelPad.exe"

RegisterCommand 62009 "CreateSearchesExt"
RegisterCommand 62010 "SearchesItem"

Global aSearchesMenu = List(), aSearchesExt = List(), aSearchesTemp = List()

Func CreateSearchesExt(lParam)
    Local out, key, val, ini = %COMMANDER_PATH% & "\Ini\Searches.ini", j
    If Not FileExist(ini) Then
       ShowHint("Не найден " & ini)
       Return      
    EndIf            
    ProcessExecGetOutput out %COMSPEC% '/c type "%ini%"'  
    Local aFile = List()
    aFile.Text = out
    aSearchesExt.Count = 0        
    aSearchesMenu.Count = 0
    For j = 0 To aFile.Count - 1
        If StrPos(aFile[j], "SearchFor") > 0 Then
           key = StrPart(aFile[j], "=", 1)
           val = StrPart(aFile[j], "=", 2)
           If StrPos(val, ".") > 0 Then
              aSearchesExt.Add(val)              
              aSearchesMenu.Add(StrPart(key, "_", 1))           
           EndIf              
        EndIf      
    Next
    Free(aFile)
    #ShowPopupMenu /D /F "CreateSearchesMenu"  
    CreateSearchesBar()
EndFunc 

Func CreateSearchesBar()
    Local txt, bar = %COMMANDER_PATH% & "\Bars\Auto_Searches.bar", j
    txt = "[Buttonbar]"
    txt &= auCRLF & "Buttoncount=" & aSearchesMenu.Count
    
    For j = 0 To aSearchesMenu.Count - 1
        txt &= auCRLF &    "Cmd" & j+1 & "=cm_SearchesMenuItem " & j+1
        #txt &= auCRLF &  "Param" & j+1 & "=" & j+1       
        txt &= auCRLF &   "Menu" & j+1 & "=" & aSearchesMenu[j]
        txt &= auCRLF & "Button" & j+1 & "=wcmicons.dll,14" 
    Next
    
    ClipPut(txt)
    If SaveClipToFile(bar) Then ShowPopupMenu /D %bar%   
EndFunc

Func CreateSearchesMenu()
    Local i, txt
    For i = 0 To aSearchesMenu.Count - 1    
       txt = txt & 'MENUITEM "' & aSearchesMenu[i] & '\t' & i & '", 100000 ' & i & auCRLF
    Next 
    Return txt
EndFunc     

Func SearchesItem(lParam)
    Local s, j, k = 1
    s = StrReplace(aSearchesExt[lParam-1], ";", " ")
    s = StrReplace(s, "  ", " ")    
    s = StrReplace(s, " ", auCRLF)
    aSearchesTemp.Text = s        
    If IsPressed(0x5B) Then
       s = ""
       For j = 0 To aSearchesTemp.Count - 1
           s &= aSearchesTemp[j] & " "
           k += 1
           If k > 30 Then
              k = 1
              s &= auCRLF
           EndIf
       Next
       ShowHint(s)
       Return
    EndIf 
    If IsPressed(0x11) Then
       If IsPressed(0x10) Then    
          s = ""
          For j = 0 To aSearchesTemp.Count - 1
             If StrPos(aSearchesTemp[j], "|") > 0 Then Break
             x = StrReplace(aSearchesTemp[j], "*", "file" & j)
             x = StrReplace(x, "?", "x")             
             s &= "echo " & j & " >" & x & auCRLF
          Next          
       EndIf        
       ClipPut(s)
       If WinFind(0, "AkelPad4") > 0 Then
          ShellExec /SW_SHOWNORMAL %ExeAkel% '/Command(4101) /Command(4155) /Call("Scripts::Main", 1, "GoHome.vbs")'
       Else 
          ShellExec /SW_SHOWNORMAL %ExeAkel% '/Command(4155) /Call("Scripts::Main", 1, "GoHome.vbs")'
       Endif             
       Return
    EndIf
    ShowPopupMenu /D /F "CreateSearchExtMenu"  
EndFunc

Func CreateSearchExtMenu()
    Local i, txt
    For i = 0 To aSearchesTemp.Count - 1    
       txt = txt & 'MENUITEM "' & aSearchesTemp[i] & '\t' & i & '", 100000 ' & i & auCRLF
    Next 
    Return txt
EndFunc

Func SaveClipToFile(Filename)
    # путь к скрипту
    # глобальная переменная DirVbs
    Local vbsp = DirVbs
    Local vbsf = vbsp & "Clip.vbs"
    If Not FileExist(vbsf) Then
       ShowDarkHint("Скрипт не найден " & vbsf, 0)   
       Return 0
    EndIf      
    ShellExec /SW_HIDE /WAIT:2000 %vbsf% '"%Filename%"' %vbsp%
    Return 1
EndFunc
[/cut]
[cut]TOTALCMD#BAR#DATA
62009

%COMMANDER_EXE%
[Searches]


-1
[/cut]
Кнопка выстраивает меню из шаблонов поиска, у которых есть расширения. Работать будет только, если секция [Searches] вынесена в отдельный файл редиректом (у меня это \Ini\Searches.ini). В файл TOTALCMD.INC нужно будет добавить команду c кодом 62010:

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

[________Autorun_________]=0
cm_SearchesMenuItem=62010;Searches Ini Menu
Временный файл панели сохраняется в "\Bars\Auto_Searches.bar". Для его создания используется скрипт Clip.vbs, путь к которому должен быть указан в заголовке (переменная DirVbs), как и путь к AkelPad. При выборе пункта меню, открывается подменю, состоящее из расширений. Выбор пункта с CTRL открывает расширения в AkelPad. Если AkelPad не используется, то текст результата будет просто скопирован в буфер. Выбор пункта с CTRL+SHIFT создает в буфере текст для сохранения в bat-файле, типа:

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

echo 0 >file0.aac
echo 1 >file1.ac3
echo 2 >file2.aif
echo 3 >file3.aiff
echo 4 >file4.aifc
echo 5 >file5.afc
echo 6 >file6.ape
echo 7 >file7.au
echo 8 >file8.snd
echo 9 >file9.cda
echo 10 >file10.dsf
echo 11 >file11.dts
echo 12 >file12.dtswav
echo 13 >file13.dtshd
echo 14 >file14.dtsma
echo 15 >file15.eac3
echo 16 >file16.flac
echo 17 >file17.fla
echo 18 >file18.m1a
echo 19 >file19.m2a
echo 20 >file20.mka
echo 21 >file21.mpa
echo 22 >file22.mp1
echo 23 >file23.mp2
echo 24 >file24.mp3
echo 25 >file25.mp4
echo 26 >file26.m4a
echo 27 >file27.m4b
echo 28 >file28.m4r
echo 29 >file29.mod
echo 30 >file30.mpc
Сохраненный батник можно запустить в отдельном каталоге, где будут созданы пустые файлы со всеми расширениями, что может пригодиться для наглядного теста всех значков из шаблонов.
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

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

Сообщение Orion9 »

Никогда не получается всё с первого раза - обязательно что-нибудь забудешь. У пунктов меню есть клавиша модификатор Win, которая просто вызывает подсказку со строкой шаблона. Скрипт вызывает две вспомогательные функции для своей работы: одну я добавил, вторую упустил:
[cut]

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

Func SaveClipToFile(Filename)
    # путь к скрипту
    # глобальная переменная DirVbs
    Local vbsp = DirVbs
    Local vbsf = vbsp & "Clip.vbs"
    If Not FileExist(vbsf) Then
       ShowDarkHint("Скрипт не найден " & vbsf, 0)   
       Return 0
    EndIf      
    ShellExec /SW_HIDE /WAIT:2000 %vbsf% '"%Filename%"' %vbsp%
    Return 1
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

[/cut]
Ну и сам Clip.vbs тоже забыл приложить:
[cut]

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

If WScript.Arguments.Count = 0 Then
   FileName = "Clip.txt"
Else 
   FileName = WScript.Arguments(0) 
End If

Set objHTML = CreateObject("htmlfile")
ClipboardText = objHTML.ParentWindow.ClipboardData.GetData("text")

Set objFSO = CreateObject("Scripting.FileSystemObject")   
Set objFile = objFSO.OpenTextFile(FileName, 2, true)
objFile.WriteLine ClipboardText
objFile.Close
[/cut]
Всё это было на предыдущих страницах, но на случай если кто-то будет читать через какое-то время, а недостающих фрагментов нет.
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Loopback
Оказывается AUTORUN_TCLANG неправильно определяет язык. В WCMD_EXT_LNG.EXT она считает языком первый EXT.
Я тут с аксакалами на ру-борде обсудил эту ситуацию и предложил для расширенных языков использовать наименование WCMD_LNG_EXT.EXT. Вроде-бы все логично, но они мне подсказали, что такое наименование неправильно читает сам ТС. Он не видит справку WCMD_LNG.CHM/HLP. WDX-плагины не видят язык LNG. То-есть спецификация WCMD_EXT_LNG.EXT не просто так придумана. К тому-же есть и варианты посложней. Например, на винкмд.ру выкладываются паки расширенных языков и меню. Там вообще вот такие языки:
wcmd_win10%PROCESSOR_ARCHITECTURE%_1_eng.lng
wcmd_win10%PROCESSOR_ARCHITECTURE%_2_eng.lng
wcmd_win10amd64_1_eng.lng
wcmd_win10amd64_2_eng.lng
wcmd_win10x86_1_eng.lng
wcmd_win10x86_2_eng.lng
Прошу привести спецификацию AUTORUN_TCLANG в соответствие со спецификацией ТС. То-есть в AUTORUN_TCLANG записывать все, что после wcmd_.
Ответить