View previous topic :: View next topic |
Author |
Message |
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
(Separately) Posted: Wed Mar 11, 2015 23:04 Post subject: |
|
|
Полностью согласен с Flasher. Если всё, что описывается во внутренних командах в конфиге, впихнуть в кнопку, она лопнет.
В самой утилите содержатся ровно те функции, что описаны в Readme. Это чтение и запись конфигурационных файлов, работа с окнами, отправка нажатий клавиш, смена каталога и т.п. Включать в неё полный перечень опций тотала никогда не было целью, наоборот была цель сделать её максимально гибкой, чтобы её можно было подстроить под любую версию тотала без перекомпиляции. Поэтому всё, что может быть описано прямым текстом, вынесено в конфиг, а сама утилита является его парсером. И командная строка тоже читается аналогично строкам конфига (параметры после /ef обрабатываются как правые части команд, /ei - как правые части действий).
Если совсем нечем заняться, можно укоротить конфиг, оставив лишь те команды, которые вызываются с кнопки, и их зависимости. Утилита, по идее, будет ругаться, если что-то не найдёт. _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
Back to top |
|
|
HA3APET
Joined: 22 Feb 2010 Posts: 151
|
(Separately) Posted: Tue Apr 07, 2015 04:04 Post subject: |
|
|
MVV
создал в контекстном меню папок через внутренние ассоциации пункт "Изменить атрибуты", командой для которого является:
Code: | "%commander_path%\Programm\TCFS2\TCFS2.exe" /u- /ef tcm(502) |
Всё отлично, появляется нужное окошечко, но хотелось бы, что бы процесс TCFS2.exe завершался сразу после того, как вызовет это окно, а не после его закрытия.
Это возможно? Или может есть более простой способ решить мою задачу с контекстным меню... |
|
Back to top |
|
|
sa
Joined: 29 Apr 2009 Posts: 2599
|
(Separately) Posted: Tue Apr 07, 2015 08:09 Post subject: |
|
|
HA3APET
Не так
tcm(502, 1)
? |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
(Separately) Posted: Tue Apr 07, 2015 11:22 Post subject: |
|
|
sa,
Строки с пробелами - обязательно в кавычки. И возможны два варианта асинхронной посылки:
Code: | TCFS2.exe /u- /ef "tcm(502, 1)" |
Code: | TCFS2.exe /u- /ef "tcm(502, -1)" |
HA3APET,
Контекстные меню через внутренние ассоциации не всегда удобны: беда тотала в том, что он не поддерживает объединение пунктов меню из разных шаблонов (если у тебя есть шаблон с пунктами для папок и шаблон для вообще всех объектов, будут отображаться только пункты первого). _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
Back to top |
|
|
sa
Joined: 29 Apr 2009 Posts: 2599
|
(Separately) Posted: Tue Apr 07, 2015 11:46 Post subject: |
|
|
MVV wrote: | обязательно в кавычки | Упустил: проверял без пробела, а потом добавил его в посте для красоты.
Quote: | возможны два варианта | При -1 процесс TCFS2.exe завершается как-то не сразу... |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
|
Back to top |
|
|
HA3APET
Joined: 22 Feb 2010 Posts: 151
|
(Separately) Posted: Tue Apr 07, 2015 15:09 Post subject: |
|
|
MVV
sa
Спасибо, здорово.
Да, немного не удобно, что TC не объединяет пункты из разных шаблонов, но пока удаётся это обходить. |
|
Back to top |
|
|
Skif_off
Joined: 28 Nov 2012 Posts: 1232
|
(Separately) Posted: Fri Apr 24, 2015 21:54 Post subject: |
|
|
Зашёл тут за сортировку по количеству файлов в папке, попробовал посылать
Code: | cm_SwitchDirSort: Сортировать каталоги: по имени/как файлы
cm_SrcCustomView5: Переключаем на пользовательский набор колонок номер 5
cm_SrcSortByCol3: Сортировать по третьей колонке в активной панели |
Code: | %COMMANDER_PATH%\Utilities\TCFS2\TCFS2.exe
/ef "msg($0B,0) tcm(2012) tcm(275) tcm(6003) msg($0B,1) redraw()" |
Крайняя команда ТС то срабатывает, то нет. Почему?
Добавлено:
DirSizeCalc не самый шустрый плаг, считать количество файлов - процесс небыстрый, сделал ход конём: убрал tcm(6003) |
|
Back to top |
|
|
sa
Joined: 29 Apr 2009 Posts: 2599
|
(Separately) Posted: Fri Apr 24, 2015 22:54 Post subject: |
|
|
Skif_off
Для себя назвал эту команду (cm_SwitchDirSort) немного по-другому:
Всегда сортировать каталоги по имени: вкл/выкл.
То есть эта команда из разряда переключателей. Поэтому, наверное и кажется: то сработает, то нет. |
|
Back to top |
|
|
Skif_off
Joined: 28 Nov 2012 Posts: 1232
|
(Separately) Posted: Sat Apr 25, 2015 00:31 Post subject: |
|
|
sa
О, спасибо, так и есть по-ходу: этот момент вообще упустил из виду.
Наверное, придётся переделывать, скриптом скорее всего - сортировка каталогов как файлов не нужна постоянно.
MVV
Что-то я немного затупил: tcm(xxx) посылают ТС SendMessage или PostMessage? И проверяется ли как-то результат? |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Apr 25, 2015 02:18 Post subject: |
|
|
Skif_off
Может быть и так и сяк. Почитай ридми, там всё описано. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Skif_off
Joined: 28 Nov 2012 Posts: 1232
|
(Separately) Posted: Sat Apr 25, 2015 03:06 Post subject: |
|
|
Flasher
В курсе, что можно и так и сяк, но не понял, как по умолчанию. Вот, допустим:
Code: | TOTALCMD#BAR#DATA
%COMMANDER_PATH%\*\TCFS2.exe
/ef tcm(2400)
wcmicons.dll,83
Пример
-1
|
Здесь что?
Пока писал, сообразил заглянуть в историю:
Quote: | 2010-06-11 v1.2
+ parameter added for msg function to send message using PostMessage instead of SendMessage |
Получается, по умолчанию - SendMessage?
Я как Буриданов осёл, никак не решу, что правильнее использовать для встроенных команд ТС ) Для пользовательских команд и WM_COPYDATA с 'G'+256*'W' в AutoIt использую SendMessageW, для встроенных - PostMessage, но периодически выношу мозг сомнениями (хотя пока и не сталкивался с какими-то проблемами). Для некоторых (открывающих окна, например) PostMessage, кажется, будет правильнее.
Last edited by Skif_off on Sat Apr 25, 2015 03:46; edited 1 time in total |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Apr 25, 2015 03:21 Post subject: |
|
|
Skif_off wrote: | Получается, по умолчанию - SendMessage? | Да, с ожиданием результата в отличии от ситуации, когда подставляем значение < 0.
Skif_off wrote: | никак не решу, что правильнее использовать для встроенных команд ТС | При вызове окон - PostMessage, в остальных случаях - зависит от ситуации. Да и параметр был бы не нужен, если бы достаточно было одного решения. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Skif_off
Joined: 28 Nov 2012 Posts: 1232
|
(Separately) Posted: Sat Apr 25, 2015 03:54 Post subject: |
|
|
Flasher wrote: | При вызове окон - PostMessage, в остальных случаях - зависит от ситуации. |
Да, с окнами PostMessage разумнее, что-то я поторопился, исправил пост, а с критериями выбора проблема. В общем, оставлю пока PostMessage дефолтным, пусть ТС сам разбирается с очередью. |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
(Separately) Posted: Sat Apr 25, 2015 22:03 Post subject: |
|
|
Вообще, по идее правильнее SendMessage, но тотал обрабатывает и PostMessage. Иногда PostMessage приводит к неправильным результатам. Собственно, если асинхронность не нужна, лучше SendMessage (режим 0 для tcm), если нужна, то сначала попробовать PostMessage (режим 1 для tcm), а если работает плохо - то SendMessage в фоне (режим -1 для tcm).
А для переключателя сортировки каталогов по имени можно делать проверку значения в wincmd.ini, чтобы не вызывать команду, если режим уже в нужном положении, как это сделано с кучей других ключей:
Code: | [Macros]
areDirsSortedByName=tcini(Configuration, SortDirsByName, 1, 1) |
И тогда гарантированно отключать сортировку по имени так:
Code: | TCFS2 /ef "if(areDirsSortedByName, tcm(2012))" |
Ну или раскрыть макрос, чтобы не надо было вписывать его в конфиг:
Code: | TCFS2 /ef "if(tcini(Configuration, SortDirsByName, 1, 1), tcm(2012))" |
_________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
Back to top |
|
|
|
|
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
|