[ Обновленные темы · Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Модератор форума: Andrey_A, simup, ХарВик, chip642  
TCIMG - Мощное средство автоматизации
Andrey_AДата: Вторник, 12.06.2012, 04:41 | Сообщение № 1
Генералиссимус

На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7191
Награды: 143
Репутация: 125
Аверин Андрей
TCIMG




Дата выпуска: 21.10.2024
Версия: 34.9
Автор: Averin Andrey
Скачать: Страница обновления TCIMG
Скачать 2 : Ссылка обновления TCIMG
Справка: TCIMG ONLINE

'=============================== Спасибо ================================
Выражаю искреннюю благодарность всем, кто напрямую или косвенно помогал и повлиял на развитие проекта, отдельное спасибо: Loopback, LonerD, GGG8, ХарВик, shveicar, Yashied, asmadeus, amel27, madmasles, CreatoR, Ward, thesittingbull, Metchnik, InnI, wakillon, Yaroslav, Abel11, chip642, Deus-V, inververs, sims, BezDNaU, Veosys, getaumy, UEZ, homer77, wpitty, JKT, vakula, boriska, =BD=, G.Sandler, Mrakobes, mopodede, Skif_off, wpitty, Rustamer, wpitty, Mchoff, iifoks447, Andarin, oshizelly, Egorkaru, coherent, Атос, yug78, vanhallen, mopodede, Афи, Axel, addhaloka, Matros, Finn, Aleks431, Zmy, Паразит, TarasBY, Userrr, Jury Abel', VikTor1985, HA3APET, alexxxxx, konuk2007, Lupo73, Prog@ndy, Avada, monoceres, авторам библиотеки MediaInfo, авторам Carl Worth и Behdad Esfahbod библиотек Cairo, авторам библиотеки librhash, авторам библиотеки Bass, авторам библиотеки FFmpeg, автору Zenden за утилиту ImgUpload, Slava10779, maK, zep, Rako1, zzzten, Nuker-Hoax, regist123, shusler, sibirnik, Romario, Lord_NEVR, Ли Чжицзюнь (李志军), ruizone (瑞), alexostrov, CaptainFlint, Thomasmolover, eukalyptus, Tuape, Helpmister, NIKZZZZ, smit0966, rediffusion, zybrevl, Rioran, I95, Vimann, And000010, VasRoman, MonarchLFV, jktgeorge, Mario Arhivario, Songbird, Malkey, Placetoload, ziabriev, Antonij72, weaponx, Angelfuze, Pendelgrast, smit0966, Jacob, Rakosvist, Karbucho, Karolinka69, SLIM, ogenry, VladMo, jentoso, Kindom, Megakrok, Altruumann, vaskamy, Alizadombej, Krasovskii, Kurolesova, Svetka99, AkulaBig, Proudhawk, Yymn7, vruzin, Xprajs, Danyfirex, Party Hu, Lost Zombie, derrikF, Karabush, aorist, o2candoo, goog0le, P8gonyajlo, destiny child, Alex Penguin, Broken_Brain, rupinskiy, FedorLashchenko, destiny_child, JenTOSO, моим близким друзьям и родственникам: одним спасибо, что поддерживали, другим - за то, что не мешали!
'=======================================================================
TCIMG - утилита для вызова различных команд Total Commander и выполнения дополнительных действий.
Мощное средство для расширения функциональности Total Commander и других программ.
Направлена на автоматизацию монотонных действий, связанных с файловыми, системными, программными, оконными операциями.
Полностью портабельна, т.е. не требует установки и не вносит в реестр или куда-либо ещё дополнительную информацию.
Утилита представляет из себя скомпилированный AutoIt3-скрипт.
Утилиту разрешено распространять только с указанием сайта поддержки: http://tc-image.3dn.ru




Кнопки для TCIMG

Регулярные выражения

Control Viewer - Просмотр информации элементов окна

Страница обновления TCIMG

Как правильно обновлять утилиту TCIMG?



В справке TCIMG.chm более 16.450 примеров применения.

Актуальная версия (бета версии) в последних сообщениях темы

Тема развития справки утилиты

Расширение функционала TCIMG

Помощь и советы ПОДКЛЮЧЕНИЕ ПРОГРАММ и СКРИПТОВ

Для запросов кнопок тема ЗАКАЗ КНОПОК

Дополнительное обсуждение TCIMG на forum.ru-board

Группа в Telegram


Сборки программ, в которых участвует утилита TCIMG, в них так же можно увидеть много интересных примеров:
AkelPad Image - сборка текстового редактора AkelPad (автор Andrey_A)
TC IMAGE - сборка файлового менеджера Total Commander (автор Andrey_A)
TC VIM - сборка файлового менеджера Total Commander (автор Matros)
TC Universal Edition - сборка файлового менеджера Total Commander (авторы Yaroslav & asmadeus)
TC Hot-Shot - сборка файлового менеджера Total Commander (автор ice_daemon)
TC Titan Portable - сборка файлового менеджера Total Commander (автор pcDenPro)
TC AkulaBig - сборка файлового менеджера Total Commander (автор AkulaBig)
TCnative - сборка файлового менеджера Total Commander (автор ziabriev)






 
chip642Дата: Четверг, 06.11.2014, 01:18 | Сообщение № 601
Генералиссимус

На сайте с: 24.04.2013
Город: Москва
Сообщений: 1495
Награды: 62
Репутация: 58
Andrey_A, все работает! Спасибо!
Цитата

В данном случае все просто:

Конечно просто, когда знаешь, где и как "строить".


Сообщение отредактировал chip642 - Четверг, 06.11.2014, 01:23
 
Andrey_AДата: Пятница, 07.11.2014, 00:47 | Сообщение № 602
Генералиссимус

На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7191
Награды: 143
Репутация: 125
Аверин Андрей
         E-Mail


Здравствуйте Андрей. Потрясён проделанной работой и в AkelPad'e и в утилите TCIMG.
...
Недавно скачал AkelPad Image 29. В нём заинтересовало всё и так же параллельное прослушивание музыки и управлением плеера из редактора. Есть минусы:
* При переключении иногда акелпад почему-то становится по верх всех окон
* Если плеер в заголовке Total Commander, то происходит его фокусировка, что очень мешает
+ и можно ли добавить ещё кнопки:
- копирование текущего трека в буфер обмена (путь, имя)
- играть с начала
- удаление трека
Спасибо! Саша Весёлый.



Тестовая версия TCIMG 89_b8, в последней версии замените соответствующие файл(ы)

Реализовано

[helpquote][±] Оптимизирована команда playn
- полностью переписан код (через сообщения WM_COPYDATA). Теперь при послании сообщений не активируется Total Commander, если плеер в его заголовке
- добавлено описание в справку
- добавлены другие вызовы управления[/helpquote]

[img640]http://tc-image.3dn.ru/Image/tcimg/0/playn.png[/img640]

В AkelPad по аналогии можно создать и другие кнопки управляющие плеером

Код
"Проигрывание  треков из папки E:\Музыка\vk\ в плеере TCIMG" Exec(`"%a\TCIMG.exe" "plays=E:\Музыка\vk\"`) Icon("%a\AkelPadImage.dll",1389)
"Переключить плеер TCIMG на предыдущий трек" Exec(`"%a\TCIMG.exe" "playn=1"`) Icon("%a\AkelPadImage.dll",1387)
"Пауза/Воспроизведение плеера TCIMG" Exec(`"%a\TCIMG.exe" "playn=4"`) Icon("%a\AkelPadImage.dll",1388)
"Переключить плеер TCIMG на следующий трек" Exec(`"%a\TCIMG.exe" "playn=6"`) Icon("%a\AkelPadImage.dll",1386)

.


 
Andrey_AДата: Пятница, 07.11.2014, 09:54 | Сообщение № 603
Генералиссимус

На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7191
Награды: 143
Репутация: 125
Аверин Андрей
Цитата chip642 ()
Прошу автора создать команду - всплывающее меню, вызываемое сочетанием клавиш, которое, при выборе одной из команд, прописанных в этом меню, сразу же закрывалось бы, то бишь не висела бы в процессах.


Реализовано.

Тестовая версия TCIMG 89_b9, в последней версии замените соответствующие файл(ы)

[helpquote][+] Оптимизирована команда zmenu
- Добавлен ключ Number в меню zmenu=hotkey_...
- Добавлены новая команда обратного вызова zmenz
- Перенесены и переименованы ключи ZMenuTrayPID, ZMenuHotkeyPID
- Добавлена в TCIMG.ini секция [ZMenu], а так же ключи TrayPID, N_PID, N_HGUI, N_TITLE, N_HMENU
- Ключ HotKey в секции меню может быть необязательным, если запускается через команду zmenz[/helpquote]

А теперь по порядку:

1. Добавлен ключ Number в меню zmenu=hotkey_...
Контекстоных меню такого типа может быть вызвано несколько, поэтому ключ Number является ОБЯЗАТЕЛЬНЫМ, т.к. в дальнейшем необходимо знать какое меню необходимо вызвать. см. MENU.tcg

2. Информация каждого меню записывается в секцию [ZMenu] в TCIMG.ini

[helpquote]; Ниже ключи, значения которых записываются при вызыве zmenu=hotkey_...
; N_... - номер запущенного меню
; N_PID - записывается PID процесса меню
; N_HGUI - записывается хендл окна, которому принадлежит меню
; N_TITLE - записывается заголовок окна, которому принадлежит меню
; N_HMENU - записывается хендл меню[/helpquote]

3. Создана новая команда zmenz

[img640]http://tc-image.3dn.ru/Image/tcimg/0/zmenz.png[/img640]


При этом ключ HotKey в секции меню может быть необязательным, если запускается через команду zmenz

Вот несколько примеров:

Код
"zmenz=1||1" - вызвать запущенное 1-е меню zmenu=hotkey_...
"zmenz=1||2" - вызвать запущенное 1-е меню zmenu=hotkey_... , после вызова процесс меню закрывается
"zmenu=hotkey_Menu_Example pause=200 zmenz=1||2" - запустить меню, вызвать и закрыть процесс


В последнемм примере с паузой можно "поиграть" (больше/меньше)

.


 
chip642Дата: Пятница, 07.11.2014, 11:48 | Сообщение № 604
Генералиссимус

На сайте с: 24.04.2013
Город: Москва
Сообщений: 1495
Награды: 62
Репутация: 58
Цитата
"zmenu=hotkey_Menu_Example pause=200 zmenz=1||2" - запустить меню, вызвать и закрыть процесс
У меня , как висел процесс меню , так и остается висеть, после выполнения команды из меню. Не знаю, может дело ко сну и я что-то упускаю. В пожеланиях было, при нажатии на кнопку или клавиатурно, сразу вызывать меню, а не из запущенного процесса.
 
Andrey_AДата: Пятница, 07.11.2014, 14:19 | Сообщение № 605
Генералиссимус

На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7191
Награды: 143
Репутация: 125
Аверин Андрей
chip642, У меня все нормально работает, вызывается меню, после вызова пункта процесс меню нигде не висит.

Цитата chip642 ()
...а не из запущенного процесса

А как по другому... процесс по любому должен запуститься, а уж потом может быть вызван
(его можно вызвать в одной команде zmenu=hotkey_Menu_Example...||и какой-то тут параметр и двумя как сейчас - что более расширенно)
Команда zmenz, как и команда playn напрямую передает сообщение...
Единственное можно убрать паузу...


 
chip642Дата: Пятница, 07.11.2014, 16:26 | Сообщение № 606
Генералиссимус

На сайте с: 24.04.2013
Город: Москва
Сообщений: 1495
Награды: 62
Репутация: 58
Andrey_A, может дело в архиве TCIMG 89_b9, что-то я там файла TCIMG.exe не вижу.
 
Andrey_AДата: Пятница, 07.11.2014, 16:54 | Сообщение № 607
Генералиссимус

На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7191
Награды: 143
Репутация: 125
Аверин Андрей
chip642, бывает))) , заодно постарался убрать паузу

Тестовая версия TCIMG 89_b10, в последней версии замените соответствующие файл(ы)

Код

"zmenu=hotkey_Menu_Example zmenz=1||2" - запустить меню, вызвать и закрыть процесс
"zmenu=hotkey_Menu_Line_Example zmenz=2||2" - запустить меню, вызвать и закрыть процесс


 
chip642Дата: Пятница, 07.11.2014, 23:15 | Сообщение № 608
Генералиссимус

На сайте с: 24.04.2013
Город: Москва
Сообщений: 1495
Награды: 62
Репутация: 58
Andrey_A,Отлично! Все работает! Еще раз Спасибо!

Сообщение отредактировал chip642 - Пятница, 07.11.2014, 23:17
 
Andrey_AДата: Суббота, 08.11.2014, 01:50 | Сообщение № 609
Генералиссимус

На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7191
Награды: 143
Репутация: 125
Аверин Андрей
Цитата chip642 ()
Все работает!

Ну и отлично!

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

Вся работа этой версии была видна не вооруженным глазом))
Единственное добавлю, что на время приостановлено тестирование и выпуск TCIMG64.exe
Просто надоело, когда стандартные функции на Autoit32 работают, а на 64 нет
И тратить время на поиск обходных путей тоже надоело)))
Не думаю что многие пользовались именно 64
(возможно, когда-нибудь вернусь к этому вопросу)

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

TCIMG 8.9 от 08.11.2014

Скачать Доступно только для пользователей





 
Andrey_AДата: Понедельник, 10.11.2014, 13:25 | Сообщение № 610
Генералиссимус

На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7191
Награды: 143
Репутация: 125
Аверин Андрей
Цитата
ну вот обновил.. при запуске утилиты menu tray пошла ошибка line 2377


Исправлено:
Тестовая версия TCIMG 90_b1, в последней версии замените соответствующие файл(ы)


 
Andrey_AДата: Понедельник, 10.11.2014, 22:13 | Сообщение № 611
Генералиссимус

На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7191
Награды: 143
Репутация: 125
Аверин Андрей
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/__/_/_/

Сегодня один из пользователей открыл на руборде тему TCIMG, спасибо ему огромное!!! Утилита пошла гулять по сайтам)))

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/__/_/_/


 
ХарВикДата: Понедельник, 10.11.2014, 22:15 | Сообщение № 612
Генералиссимус

На сайте с: 29.01.2012
Город: Черкассы
Сообщений: 1629
Награды: 18
Репутация: 18
up good
 
Andrey_AДата: Вторник, 11.11.2014, 22:18 | Сообщение № 613
Генералиссимус

На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7191
Награды: 143
Репутация: 125
Аверин Андрей
Недавно поступил такой вопрос по ошибке

Цитата shveicar ()

Не срабатывает команда, если её прописать в .tcg в секцию [pm_Magick_text22]
Если напрямую в кнопке тотала, то работает нормально
Вызов:
Код
itray=3 tcimg=$pmpm_Magick_text22


Код
imgpr=1 shape=20 exect=$var_d=##[combo=BOX_V03]||$var_ay=##[combo=BOX_V02]||$var_ai=##[combo=BOX_V01]||$var_td=##[combo=BOX_V04]||$var_id=##[combo=BOX_V05]||$var_txt=##[edits=BOX_V01]||$var_txt=StringReplace('$var_txt',@CRLF,'@CRLF') sends=@<info=i3%P%N> sends=@<info=f10%P%N>!!7 forpgs exect=$var_aa=StringSplit(_StringDuplication('maroon-black|purple-MidnightBlue|DeepPink4-NavyBlue|navy-DarkRed|cyan3-DarkOrange3|',2),'|',1)  <FOR> 1 <TO> 5 exect=$var_s=$var_aa[:INDEX:] sends=x!!2||##rndm<1|6> start=Magick||-size||GLOBALSENDS<1>||xc:||+noise||Random||-channel||R||-threshold||.4%%||-negate||-channel||RG||-separate||+channel||+clone| |-compose||multiply||-flatten||-virtual-pixel||tile||-blur||0x.4||-motion-blur||0x20+45||-normalize||-fill||$var_ay||-tint||100%%||-matte||- virtual-pixel||transparent||-channel||A||-blur||0x8||-evaluate||subtract||50%%||-evaluate||multiply||2.001||%%TCIMG_PATH%%\Temp\temp.png||&&hide||&&wait renmm=%%TCIMG_PATH%%\Temp\zagotovka-0.png||zagotovka start=Magick||GLOBALSENDS<7>||-matte||-virtual-pixel||transparent||-channel||A||-blur||0x8||-evaluate||subtract||50%%||-evaluate||multiply|| 2.001||%%TCIMG_PATH%%\Temp\zagotovka.png||&&hide||&&wait start=Magick||%%TCIMG_PATH%%\Temp\zagotovka.png||canvas:none||-font||%%COMMANDER_PATH%%\Programs\ImageMagick\font\ru\Geisha.ttf||-pointsize| |$var_td||-tile||gradient:$var_s||-strokewidth||2||-stroke||#GLOBALSENDS<2>||-gravity||$var_id||-draw||"text~~10,10~~'$var_txt'"||-quality|| 80||%%TCIMG_PATH%%\Temp\sbor_:INDEX:.png||&&hide||&&wait start=Magick||%%TCIMG_PATH%%\Temp\temp.png||%%TCIMG_PATH%%\Temp\sbor_:INDEX:-0.png||-compose||$var_ai||-composite||-quality||80||%%TCIMG_PAT H%%\Temp\sborze_:INDEX:.png||&&hide||&&wait <NEXT> pause=500 sends=x!!3||##rndm<3|30>||#Hmd5|1 slist=PS<%%TCIMG_PATH%%\Temp\!!1!!0!!png>||test<1n!!sborze_\d+>||formt<sps34,sps35>||sortnm<2> start=Magick||-delay||10||GLOBALSLIST<1>||-resize||$var_d||-normalize||-auto-level||-layers||OptimizeFrame||-loop||0||"%pAnime-GLOBALSENDS<3 >".gif||&&hide||&&wait tempxx



Да... докатились и до таких километровых команд)))

Оказалось, что утилита тут не причём - просто уткнулись в ограничение командной строки Total Commander

В справке к тоталу написано:

[helpquote]Длина командной строки не может превышать 32767 символов[/helpquote]

Но как оказалось, что в пользовательских командах ограничение осталось на 2047-ми символах:

Простой тест на Autoit:

1. Создаём пользовательскую команду:

Код
[em_Command_Test]
cmd=%COMMANDER_PATH%\Utilities\Scripting\AutoIt\AutoIt3.exe "%COMMANDER_PATH%\TEST.au3"
param=парамметр1 парамметр2 парамметр3 парамметр4 парамметр5 парамметр6 парамметр7 парамметр8 парамметр9 парамметр10 парамметр11 парамметр12 парамметр13 парамметр14 парамметр15 парамметр16 парамметр17 парамметр18 парамметр19 парамметр20 парамметр21 парамметр22 парамметр23 парамметр24 парамметр25 парамметр26 парамметр27 парамметр28 парамметр29 парамметр30 парамметр31 парамметр32 парамметр33 парамметр34 парамметр35 парамметр36 парамметр37 парамметр38 парамметр39 парамметр40 парамметр41 парамметр42 парамметр43 парамметр44 парамметр45 парамметр46 парамметр47 парамметр48 парамметр49 парамметр50 парамметр51 парамметр52 парамметр53 парамметр54 парамметр55 парамметр56 парамметр57 парамметр58 парамметр59 парамметр60 парамметр61 парамметр62 парамметр63 парамметр64 парамметр65 парамметр66 парамметр67 парамметр68 парамметр69 парамметр70 парамметр71 парамметр72 парамметр73 парамметр74 парамметр75 парамметр76 парамметр77 парамметр78 парамметр79 парамметр80 парамметр81 парамметр82 парамметр83 парамметр84 парамметр85 парамметр86 парамметр87 парамметр88 парамметр89 парамметр90 парамметр91 парамметр92 парамметр93 парамметр94 парамметр95 парамметр96 парамметр97 парамметр98 парамметр99 парамметр100 парамметр101 парамметр102 парамметр103 парамметр104 парамметр105 парамметр106 парамметр107 парамметр108 парамметр109 парамметр110 парамметр111 парамметр112 парамметр113 парамметр114 парамметр115 парамметр116 парамметр117 парамметр118 парамметр119 парамметр120 парамметр121 парамметр122 парамметр123 парамметр124 парамметр125 парамметр126 парамметр127 парамметр128 парамметр129 парамметр130 парамметр131 парамметр132 парамметр133 парамметр134 парамметр135 парамметр136 парамметр137 парамметр138 парамметр139 парамметр140 парамметр141 парамметр142 парамметр143 парамметр144 парамметр145 парамметр146 парамметр147 парамметр148 парамметр149 парамметр150 парамметр151 парамметр152 парамметр153 парамметр154 парамметр155 парамметр156 парамметр157 парамметр158 парамметр159 парамметр160 парамметр161 парамметр162 парамметр163 парамметр164 парамметр165 парамметр166 парамметр167


2. В скрипте TEST.au3 прописываем:

Код
#include <Array.au3>
_ArrayDisplay($CmdLine)  


3. Запускаем:

Код
TOTALCMD#BAR#DATA
em_Command_Test

%COMMANDER_PATH%\TOTALCMD.EXE
Текст длины пользовательской команды

11858


И видим, что в скрипт попадают не все параметры
Возможно кому-то это было известно, но лично я не сталкивался

А что же делать? Когда shveicar занимается почти волшебным делом - автоматическим созданием GIF анимации, где длина командной строки зашкаливает за 2047 символов...
(и это, по его словам только начало)
(надеюсь он поделится с нами его наработками)

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

Отступление...

В tcimg есть параметры, позволяющие вызвать многострочные (и длинные) команды: $pm и $tm

В справке о них написано, но ещё раз поясню, наверняка у кого-то могут возникать вопросы:

a) Как они создаются?

В файлах TCIMG.tcg создается секция, где прописываются команды, так же как в командной строке

Если в командах участвуют параметры Total Commander (%p, %t, %L ... см. Дополнение №7), то используется секция с префиксом pm_ - [pm_StartPrograms]
Вызвать которую можно, через команду:
Код
tcimg=$pmpm_StartPrograms


Если в командах НЕ участвуют параметры Total Commander, то используется секция с префиксом tm_ - [tm_UninstallXlam]
Вызвать которую можно, через команду:
Код
tcimg=$tmtm_UninstallXlam


б) Запись команд?

В секциях могут прописываться команды как в одну строку, так и многострочно

в) Как они работают?

  1) $pm - т.к в командах есть параметры TC, то секция разбивается построчно (если многострочная секция) и поочерёдно из каждой строки в файле %COMMANDER_PATH%\UserCmd.ini создаётся пользовательская команда и вызывается через Total Commander (т.е. каждая строка в отдельном процессе)

  2) $tm - секция разбивается построчно и по пробелам, поочерёдно каждая команда (с её параметрами) запускается в текущем процессе

Вот и всё)))

Примеры таких секций вы можете посмотреть в файле TCIMG.tcg

Они отлично работали и работают, Но как оказалось, что этого не достаточно:

- в секции [pm_...] как оказалось есть ограничение строки до 2047 символов. Можно конечно команды разбить построчно, НО как показала проблемная команда - её разбить никак нельзя, т.к. теряются значения переменных

- в секции [tm_...], т.к. она разбивается построчно и попробельно, тоже есть ограничения: к примеру невозможна работа таких команд, как shape, работа циклов <FOR> и ряда ещё (т.е. команды, которым необходима информация всей командной строки)

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

Для реализации поставленного вопроса, уважаемым супер пользователем утилиты, shveicar,
предприняты некоторые действия обхода такой ситуации:

Тестовая версия TCIMG 90_b5, в последней версии замените соответствующие файл(ы)

1. Создана в команде tcimg новая подкоманда - вызов пользовательских команд $sm

В отличае от $pm и $tm секция [sm_...] разбивается построчно (если многострочная секция) и каждая строка с командами поочерёдно запускается в отдельном процессе утилиты.

Возможно в длине строки есть ограничения, но точно не 2047 символов (наверно в районе 32767 символов - практика покажет)

Но тут остаётся вопрос: А как быть в параметрами Total Commander? Ведь они в $sm не сработают...

Очень просто - все параметры ТС можно заменить аналогом - параметром [tc] (см. Дополнение №12)

(т.к. параметр [tc] срабатывает тогда, когда до него доходит очередь, а не в момент вызова, то рекомендуется все нужные параметры из тотала получить в начале ком. строки через команду sends или exect и затем перенаправить значения в любое место)

Код
Пример:
"exect=$var_ss=##@[tc=AP]||_ViewValues('$var_ss')" - записать в переменную $var_ss путь активной панели
"exect=$var_ss=##@[tc=AА]||_ViewValues('$var_ss')" - записать в переменную $var_ss путь объекта под курсором
или
"sends=@<info=i3[tc=AA]> GLOBALSENDS<a>" - записать в массив sends высоту и ширину изображения под курсором
"sends=@<info=f10[tc=AA]>!!7 GLOBALSENDS<a>" - записать в массив sends в 7-ю ячейку файла под курсором


В итоге получаем секцию:

Код
[sm_Magick_text]
imgpr=1 shape=20 exect=$var_d=##[combo=BOX_V03]||$var_ay=##[combo=BOX_V02]||$var_ai=##[combo=BOX_V01]||$var_td=##[combo=BOX_V04]||$var_id=##[combo=BOX_V05]||$var_txt=##[edits=BOX_V01]||$var_txt=StringReplace('$var_txt',@CRLF,'@CRLF') sends=@<info=i3[tc=AA]> sends=@<info=f10[tc=AA]>!!7 sends=@<info=f15[tc=AA]>!!8 exect=$var_aa=StringSplit(_StringDuplication('maroon-black|purple-MidnightBlue|DeepPink4-NavyBlue|navy-DarkRed|cyan3-DarkOrange3|',2),'|',1)  forpgs <FOR> 1 <TO> 5 exect=$var_s=$var_aa[:INDEX:] sends=x!!2||##rndm<1|6> start=Magick||-size||GLOBALSENDS<1>||xc:||+noise||Random||-channel||R||-threshold||.4%||-negate||-channel||RG||-separate||+channel||+clone|| -compose||multiply||-flatten||-virtual-pixel||tile||-blur||0x.4||-motion-blur||0x20+45||-normalize||-fill||$var_ay||-tint||100%||-matte||-vi rtual-pixel||transparent||-channel||A||-blur||0x8||-evaluate||subtract||50%||-evaluate||multiply||2.001||%TCIMG_TEMP%\temp.png||&&hide||&&wait renmm=%TCIMG_TEMP%\zagotovka-0.png||zagotovka start=Magick||GLOBALSENDS<7>||-matte||-virtual-pixel||transparent||-channel||A||-blur||0x8||-evaluate||subtract||50%||-evaluate||multiply||2 .001||%TCIMG_TEMP%\zagotovka.png||&&hide||&&wait start=Magick||%TCIMG_TEMP%\zagotovka.png||canvas:none||-font||%COMMANDER_PATH%\Programs\ImageMagick\font\ru\Geisha.ttf||-pointsize||$var_td| |-tile||gradient:$var_s||-strokewidth||2||-stroke||#GLOBALSENDS<2>||-gravity||$var_id||-draw||"text~~10,10~~'$var_txt'"||-quality||80||%TCIM G_TEMP%\sbor_:INDEX:.png||&&hide||&&wait start=Magick||%TCIMG_TEMP%\temp.png||%TCIMG_TEMP%\sbor_:INDEX:-0.png||-compose||$var_ai||-composite||-quality||80||%TCIMG_TEMP%\sborze_:INDE X:.png||&&hide||&&wait <NEXT> pause=500 sends=x!!3||##rndm<3|30>||#Hmd5|1 slist=PS<%TCIMG_TEMP%\!!1!!0!!png>||test<1n!!sborze_\d+>||formt<sps34,sps35>||sortnm<2> start=Magick||-delay||10||GLOBALSLIST<1>||-resize||$var_d||-normalize||-auto-level||-layers||OptimizeFrame||-loop||0||GLOBALSENDS<1>Anime-GL OBALSENDS<3>.gif||&&hide||&&wait tempxx


Вызываем:

Код
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\TCIMG.exe
itray=3 tcimg=$smsm_Magick_text
Wcmicons.dll,2186
Тестирование вызова команды tcimg=$smsm_Magick_text

-1


И должно всё сработать)))

Кстати, первая буква $sm параметра в честь неугомонного автоматизатора shveicar (samodelkin)

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

2. Создана в команде tcimg новая подкоманда - вызов пользовательских команд $am

В отличае от $pm, $tm и $sm в секции [am_...] заменяются все переносы строк пробелом (предварительно удалив начальные и конечные пустые символы), создавая одну строку для запуска всех команд в отдельном процессе утилиты.

Это позволяет серию команд разбивать на группы (как в скриптинге) для визуального чтения...

В итоге предыдущую команду можно прописать в секции так:
Код
[am_Magick_text]
imgpr=1
shape=20
exect=$var_d=##[combo=BOX_V03]||$var_ay=##[combo=BOX_V02]||$var_ai=##[combo=BOX_V01]||$var_td=##[combo=BOX_V04]||$var_id=##[combo=BOX_V05]||$var_txt=##[edits=BOX_V01]||$var_txt=StringReplace('$var_txt',@CRLF,'@CRLF')
sends=@<info=i3[tc=AA]>
sends=@<info=f10[tc=AA]>!!7
sends=@<info=f15[tc=AA]>!!8
exect=$var_aa=StringSplit(_StringDuplication('maroon-black|purple-MidnightBlue|DeepPink4-NavyBlue|navy-DarkRed|cyan3-DarkOrange3|',2),'|',1)  
forpgs
<FOR>
   1
<TO>
   5
     exect=$var_s=$var_aa[:INDEX:]
     sends=x!!2||##rndm<1|6>
     start=Magick||-size||GLOBALSENDS<1>||xc:||+noise||Random||-channel||R||-threshold||.4%||-negate||-channel||RG||-separate||+channel||+clone|| -compose||multiply||-flatten||-virtual-pixel||tile||-blur||0x.4||-motion-blur||0x20+45||-normalize||-fill||$var_ay||-tint||100%||-matte||-vi rtual-pixel||transparent||-channel||A||-blur||0x8||-evaluate||subtract||50%||-evaluate||multiply||2.001||%TCIMG_TEMP%\temp.png||&&hide||&&wait
     renmm=%TCIMG_TEMP%\zagotovka-0.png||zagotovka
     start=Magick||GLOBALSENDS<7>||-matte||-virtual-pixel||transparent||-channel||A||-blur||0x8||-evaluate||subtract||50%||-evaluate||multiply||2 .001||%TCIMG_TEMP%\zagotovka.png||&&hide||&&wait
     start=Magick||%TCIMG_TEMP%\zagotovka.png||canvas:none||-font||%COMMANDER_PATH%\Programs\ImageMagick\font\ru\Geisha.ttf||-pointsize||$var_td| |-tile||gradient:$var_s||-strokewidth||2||-stroke||#GLOBALSENDS<2>||-gravity||$var_id||-draw||"text~~10,10~~'$var_txt'"||-quality||80||%TCIM G_TEMP%\sbor_:INDEX:.png||&&hide||&&wait
     start=Magick||%TCIMG_TEMP%\temp.png||%TCIMG_TEMP%\sbor_:INDEX:-0.png||-compose||$var_ai||-composite||-quality||80||%TCIMG_TEMP%\sborze_:INDE X:.png||&&hide||&&wait
<NEXT>
pause=500
sends=x!!3||##rndm<3|30>||#Hmd5|1
slist=PS<%TCIMG_TEMP%\!!1!!0!!png>||test<1n!!sborze_\d+>||formt<sps34,sps35>||sortnm<2>
start=Magick||-delay||10||GLOBALSLIST<1>||-resize||$var_d||-normalize||-auto-level||-layers||OptimizeFrame||-loop||0||GLOBALSENDS<1>Anime-GL OBALSENDS<3>.gif||&&hide||&&wait
tempxx


Вызываем:

Код
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\TCIMG.exe
itray=3 tcimg=$amam_Magick_text
Wcmicons.dll,2186
Тестирование вызова команды tcimg=$amam_Magick_text

-1


Кстати, первая буква $am параметра догадайтесь в честь кого)))

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

И мелкие, но важные обновления, для этой команды:

3. Для добавление многострочного текста в команде start теперь тег @CRLF заменяется на перенос

4. Изменена обработка параметров после команды shape (были пересечения с циклом <FOR> )

5. В TCIMG.lng можно прописывать не только поочерёдные ключи, такие как
Код
InputBox79=
InputBox80=
InputBox81=
...
ComboBox15=
ComboBox16=
ComboBox17=
...

Но и со своим окончанием:
Код
InputBox_N01=
InputBox_S05=
ComboBox_V01
ComboBox_G02
ComboBox_H03
...
EditsBox_V01
...


[ps]
Кстати тестовая команда превращает файл изображения под курсором (к примеру JPG) в удивительный GIF
Используется утилита imagemagick, тут можно найти начало обсуждения, ссылку... и скачать
Программа прописывается в TCIMG.ini в секции
Код
[Programs]
...
Magick=%COMMANDER_PATH%\Utilities\Images\ImageMagick\convert.exe

.

Когда-то я думал, что версия 2.1 - это всё, а тут... оказалось, что чем дольше в лес, тем длиннее ком. строка :D
[/ps]

.


 
shveicarДата: Вторник, 11.11.2014, 23:43 | Сообщение № 614
Генерал-лейтенант

На сайте с: 18.05.2012
Город: Санкт-Петербург
Сообщений: 562
Награды: 10
Репутация: 23
Спасибо Andrey_A
Как всегда приходишь на помощь.
Заодно и выяснили скрытые подводные камни в Total commander и сумели их обойти.



Сообщение отредактировал shveicar - Среда, 12.11.2014, 17:56
 
wpittyДата: Среда, 12.11.2014, 17:56 | Сообщение № 615
Рядовой

На сайте с: 14.08.2012
Город: Mahiljow
Сообщений: 12
Награды: 1
Репутация: 0
Помогите разобраться плз, как работает команда macro

TOTALCMD#BAR#DATA
%COMMANDER_PATH%\TCIMG.exe
macro="c:\ListCommands.txt"
%COMMANDER_PATH%\Wcmicons.dll,467
Запуск команд по списку ListCommands

Например ListCommands:
tcimg=emem_my1
tcimg=emem_my2

пишет ошибку TCIMG в строке 1955. Или я не понял смысла команды macro? Спасибо!
P.S. Просто хотел запускать множество команд из txt-файла
 
Поиск:

Интеллектуальные права и отказ от ответственности