WSH + TCScript = мощное средство автоматизации TC!

Форум о самом популярном файловом менеджере Total Commander

Сообщение Volniy » Ср окт 20, 2004 7:13 pm

<!--QuoteBegin-lef+Oct 20 2004, 18:20--><div class='quotetop'>QUOTE(lef @ Oct 20 2004, 18:20)</div><div class='quotemain'><!--QuoteEBegin-->Попробую. Правда у меня их несколько, в каждый что-ли запихнуть по Helper'у?<!--QuoteEnd--></div><!--QuoteEEnd-->
Это бесполезно: работать будет только один (который был инсталлирован последним). Мне кажется проще будет обзавестись свежей версией Totala. Если версия 6.0 и выше и скрипты запускаются из-под Тотала (доступна переменная %commander_path%), такой проблемы не должно быть в принципе. Или загружай INC-файл вручную через LoadIncFile.
<!--QuoteBegin--><div class='quotetop'>QUOTE</div><div class='quotemain'><!--QuoteEBegin-->Надо бы обо всем этом в Readme написать
<!--QuoteEnd--></div><!--QuoteEEnd-->
О чем именно?
Volniy
Ст. лейтенант
 
Сообщений: 121
Зарегистрирован: Сб ноя 22, 2003 11:42 pm
Пункты репутации: 0

Сообщение lef » Пт окт 22, 2004 11:48 am

<!--QuoteBegin--><div class='quotetop'>QUOTE</div><div class='quotemain'><!--QuoteEBegin--><!--QuoteBegin--><div class='quotetop'>QUOTE</div><div class='quotemain'><!--QuoteEBegin-->Надо бы обо всем этом в Readme написать<!--QuoteEnd--></div><!--QuoteEEnd-->
О чем именно? <!--QuoteEnd--></div><!--QuoteEEnd-->
Обо всем этом, что Helper не работает с 5-м Тоталом без дополнительных телодвижений, что рекомендуется класть его к экзешнику тотала, что нужно проверить реги, описать способ проверки на нахождение inc-файла, повторить призыв к переходу на 6-й тотал и т.д., и т.п. <!--emo&:)-->[img]style_emoticons/<#EMO_DIR#>/smile.gif[/img]<!--endemo-->
lef
Ефрейтор :)
 
Сообщений: 10
Зарегистрирован: Пт июл 23, 2004 5:23 pm
Пункты репутации: 0

Сообщение Volniy » Пт окт 22, 2004 7:11 pm

<!--QuoteBegin-lef+Oct 22 2004, 14:48--><div class='quotetop'>QUOTE(lef @ Oct 22 2004, 14:48)</div><div class='quotemain'><!--QuoteEBegin-->Обо всем этом, что Helper не работает с 5-м Тоталом без дополнительных телодвижений, что рекомендуется класть его к экзешнику тотала, что нужно проверить реги, описать способ проверки на нахождение inc-файла, повторить призыв к переходу на 6-й тотал и т.д., и т.п.
<!--QuoteEnd--></div><!--QuoteEEnd-->
1) Без "телодвижений" Helper не заработает и с 6-м Тоталом.
2) Ложить его в папку к Тотал-у совсем не нужно, это просто наикрайнейший вариант на случай, когда Тотал спрятался отовсюду, где только это возможно. Есть еще, правда, вариант вычитать путь к Тоталу через свойства Тоталовского процесса, но это у меня чего-то не пошло на 2000/XP, надо еще будет глянуть.
3) Регистрационная информация при установке Totala его же инсталятором всегда есть и она валидная.
4) Призывать к использованию какой-либо версии Тотала, как и к использованию самого Helpera я смысла не вижу.
5) Документация, конечно же, нужна. И я ее, видимо, напишу, но когда буду делать релиз. А с этим у меня одна проблема: я не знаю, стоит ли делать релиз или еще рановато.
Volniy
Ст. лейтенант
 
Сообщений: 121
Зарегистрирован: Сб ноя 22, 2003 11:42 pm
Пункты репутации: 0

Сообщение Batya » Пн дек 06, 2004 12:16 pm

2Volniy
А есть ли процедура, позволяющая узнать, какая файловая панель TC активна - правая или левая?
Batya
Ст. лейтенант
 
Сообщений: 146
Зарегистрирован: Вт апр 29, 2003 8:28 am
Откуда: Москва
Пункты репутации: 0

Сообщение Volniy » Пн дек 06, 2004 12:47 pm

<!--QuoteBegin--><div class='quotetop'>QUOTE</div><div class='quotemain'><!--QuoteEBegin-->2Volniy
А есть ли процедура, позволяющая узнать, какая файловая панель TC активна - правая или левая?<!--QuoteEnd--></div><!--QuoteEEnd-->
В данной версии - нет. И, кроме того, пока даже нету идеи, как эту информацию можно получить от ТС <!--emo&:unsure:-->[img]style_emoticons/<#EMO_DIR#>/unsure.gif[/img]<!--endemo--> Идеи есть?
Volniy
Ст. лейтенант
 
Сообщений: 121
Зарегистрирован: Сб ноя 22, 2003 11:42 pm
Пункты репутации: 0

Сообщение Batya » Пн дек 06, 2004 3:38 pm

2Volniy
При операциях на правой\левой панели инишник TC не меняется. Он меняется только при выходе. Значит TC работает с какими-то своими переменными. Нет ли возможности до них добраться (читать\переопределять)?
Batya
Ст. лейтенант
 
Сообщений: 146
Зарегистрирован: Вт апр 29, 2003 8:28 am
Откуда: Москва
Пункты репутации: 0

Сообщение Volniy » Вт дек 07, 2004 6:53 am

<!--QuoteBegin-Batya+Dec 6 2004, 17:38--><div class='quotetop'>QUOTE(Batya @ Dec 6 2004, 17:38)</div><div class='quotemain'><!--QuoteEBegin-->Значит TC работает с какими-то своими переменными. Нет ли возможности до них добраться (читать\переопределять)?
<!--QuoteEnd--></div><!--QuoteEEnd-->
Теоретически - есть, но это уже как-то...
Это больше похоже на взлом TC, нежели чем на управление им.
Volniy
Ст. лейтенант
 
Сообщений: 121
Зарегистрирован: Сб ноя 22, 2003 11:42 pm
Пункты репутации: 0

Сообщение Batya » Вт дек 07, 2004 7:34 am

2Volniy
<!--QuoteBegin-Volniy+Dec 7 2004, 09:53--><div class='quotetop'>QUOTE(Volniy @ Dec 7 2004, 09:53)</div><div class='quotemain'><!--QuoteEBegin-->Теоретически - есть, но это уже как-то...
Это больше похоже на взлом TC, нежели чем на управление им.
[right][snapback]154820[/snapback][/right]
<!--QuoteEnd--></div><!--QuoteEEnd-->
Ну почему же "взлом"? Никто же не предлагает лезть в код. Предлагается только управление переменными окружения TC.
Batya
Ст. лейтенант
 
Сообщений: 146
Зарегистрирован: Вт апр 29, 2003 8:28 am
Откуда: Москва
Пункты репутации: 0

Сообщение Volniy » Вт дек 07, 2004 10:06 am

У TC есть только одна (интересующая нас) переменная окружения - %commander_path%. И зачем это нам ею управлять?
Что касается активной файловой панели, то я считаю, что если ее действительно зачем то нужно определить, то правильнее будет самому ее установить (через TCS.SendCommand 4001 или TCS.SendCommand 4002, соответственно). А вообще, какая разница какая панель активна? Важно ведь что именно в ней при этом находится.
Volniy
Ст. лейтенант
 
Сообщений: 121
Зарегистрирован: Сб ноя 22, 2003 11:42 pm
Пункты репутации: 0

Сообщение Batya » Вт дек 07, 2004 10:44 am

2Volniy
Приходится часто работать с фильтрами и меня заинтересовала следующая задача - <a href='http://www.fforum.ru/index.php?showtopic=16787' target='_blank'>Кнопки для фильтров</a>.
Выяснилось, что при наложении фильтра TC не меняет инишник. Он меняется только при выходе из TC. Меняются параметры show (1 | 2 | 3 - Все файлы | Программы | Фильтр) и userspec (имя фильтра с префиксом ">") в секциях "left" и "right". Отсюда интерес к выявлению активной панели. Но пока этот интерес чисто академический, т.к., повторюсь, эти данные попадают в инишник только при выходе из TC. Соответственно, встает другая проблема - как TC хранит текущую информацию (в частности, наложенные фильтры).

З.Ы. Кстати, поскольку данные о фильтрах храняться в "left" и "right", а не в"lefttabs" и "righttabs", видна одна неудобность - фильтр накладывается на всю панель, а не на отдельные закладки <!--emo&:(-->[img]style_emoticons/<#EMO_DIR#>/sad.gif[/img]<!--endemo-->
Batya
Ст. лейтенант
 
Сообщений: 146
Зарегистрирован: Вт апр 29, 2003 8:28 am
Откуда: Москва
Пункты репутации: 0

Сообщение SAM » Вт дек 07, 2004 12:09 pm

2Batya
<!--QuoteBegin--><div class='quotetop'>QUOTE</div><div class='quotemain'><!--QuoteEBegin-->как TC хранит текущую информацию <!--QuoteEnd--></div><!--QuoteEEnd-->
Да... это ВОПРОС... (но imho - без ответа)
Если бы было возможно ее как то снять, то лично я первым делом бы реализовал сохранение истории посещенных каталогов.

(А насчет фильтров на кнопке - это просто - ответил в указанном тобой топике)
SAM
Старшина
 
Сообщений: 45
Зарегистрирован: Пн май 24, 2004 5:33 am
Пункты репутации: 0

Сообщение SAM » Чт дек 09, 2004 7:46 am

Вот. (Идея - Volniy).
Нажимаем на кнопку - включается фильтр на файлы. Еще раз - отключается. Удобно <!--emo&:)-->[img]style_emoticons/<#EMO_DIR#>/smile.gif[/img]<!--endemo-->
Код: выделить все
Option Explicit
Dim TCS
Const sFilter = ">Последние файлы"

Set TCS = CreateObject("TCSCRIPT.Helper")
TCS.Wait = False
TCS.SendCommand "cm_SrcUserDef"
If bCheck Then
   TCS.SendKeystroke "*.*"
Else
   TCS.SendKeystroke sFilter
End If
TCS.SendKeystroke "{ENTER}"
Set TCS = Nothing
WScript.Quit

Function bCheck()
'0
'Это ^ меточка (не трогать!)
   Dim FSO, file
   Dim sLine, sText
   Const ForReading = 1, ForWriting = 2, ForAppending = 8
   
   Set FSO = CreateObject("Scripting.FileSystemObject")
   Set file = FSO.OpenTextFile(WScript.ScriptFullName, ForReading, False)
   Do While Not file.AtEndOfStream
       sLine = file.ReadLine
       Select Case sLine
           Case "'1"
               bCheck = True
               sLine = "'0"
           Case "'0"
               bCheck = False
               sLine = "'1"
       End Select
       sText = sText & sLine & vbNewLine
   Loop
   file.Close
   Set file = FSO.OpenTextFile(WScript.ScriptFullName, ForWriting, False)
   file.Write (sText)
   file.Close
   Set file = Nothing
End Function
SAM
Старшина
 
Сообщений: 45
Зарегистрирован: Пн май 24, 2004 5:33 am
Пункты репутации: 0

Сообщение Batya » Чт дек 09, 2004 8:25 am

2SAM
В таком варианте не очень красиво будет работать при фильтровании на двух файловых панелях. И вместо
Код: выделить все
TCS.SendCommand "cm_SrcUserDef"
If bCheck Then
  TCS.SendKeystroke "*.*"
Else
  TCS.SendKeystroke sFilter
End If

лучше
Код: выделить все
If bCheck Then
  TCS.SendCommand "cm_SrcAllFiles"
Else
  TCS.SendCommand "cm_SrcUserDef"
  TCS.SendKeystroke sFilter
End If


2Volniy
И всё-таки нужно научиться определять активную панель и вытягивать информацию из памяти.
И ещё - как можно выудить информацию из окна TC из панели с именем текущего каталога? (Переименование ".." это не совсем то, что нужно.) Смутно догадываюсь, что можно, но что-то сегодня голова не работает <!--emo&:blink:-->[img]style_emoticons/<#EMO_DIR#>/blink.gif[/img]<!--endemo-->
Batya
Ст. лейтенант
 
Сообщений: 146
Зарегистрирован: Вт апр 29, 2003 8:28 am
Откуда: Москва
Пункты репутации: 0

Сообщение Volniy » Чт дек 09, 2004 1:14 pm

2Sam
Зашибись идея с переключением!
Только вот нафига я тогда писал функции работы с INI-файлами, если ты предлагаешь заменить их чем-то весьма заумным? <!--emo&<_<-->[img]style_emoticons/<#EMO_DIR#>/dry.gif[/img]<!--endemo--> Ну-ка, посмотри-ка мой вариант bCheck без использования других внешних объектов.
Код: выделить все
Function bCheck()
  Dim sFile
  sFile = WScript.ScriptFullName
  bCheck = TCS.INIRead(sFile, "FilterState", "Value", 0)
  TCS.INIWrite sFile, "FilterState", "Value", Not bCheck
End Function

Вот то-то жа <!--emo&:)-->[img]style_emoticons/<#EMO_DIR#>/smile.gif[/img]<!--endemo-->

<!--QuoteBegin-Batya+Dec 9 2004, 10:25--><div class='quotetop'>QUOTE(Batya @ Dec 9 2004, 10:25)</div><div class='quotemain'><!--QuoteEBegin-->И ещё - как можно выудить информацию из окна TC из панели с именем текущего каталога?
<!--QuoteEnd--></div><!--QuoteEEnd-->
Элементарно: возьми имя выделенного в панели файла с полным путем и вытащи из него сам путь. Могу дописать как макрос.

И я тебя прошу: не надо больше ничего говорить о "вытягивании информации из памяти TC" <!--emo&:(-->[img]style_emoticons/<#EMO_DIR#>/sad.gif[/img]<!--endemo-->
Volniy
Ст. лейтенант
 
Сообщений: 121
Зарегистрирован: Сб ноя 22, 2003 11:42 pm
Пункты репутации: 0

Сообщение SAM » Пт дек 10, 2004 6:41 am

2Volniy
<!--QuoteBegin--><div class='quotetop'>QUOTE</div><div class='quotemain'><!--QuoteEBegin-->посмотри-ка мой вариант bCheck<!--QuoteEnd--></div><!--QuoteEEnd-->
Да... Чой то я опять забыл о всех безграничных возможностях WSH Helper <!--emo&:blink:-->[img]style_emoticons/<#EMO_DIR#>/blink.gif[/img]<!--endemo-->
<!--QuoteBegin--><div class='quotetop'>QUOTE</div><div class='quotemain'><!--QuoteEBegin-->возьми имя выделенного в панели файла с полным путем и вытащи из него сам путь<!--QuoteEnd--></div><!--QuoteEEnd-->
А вот тут ты похоже забыл, что сам придумал <!--emo&;)-->[img]style_emoticons/<#EMO_DIR#>/wink.gif[/img]<!--endemo-->
<!--QuoteBegin--><div class='quotetop'>QUOTE</div><div class='quotemain'><!--QuoteEBegin-->GetSrcPath - возвращает путь к панели-источнику
GetTrgPath - возвращает путь к целевой панели
<!--QuoteEnd--></div><!--QuoteEEnd-->
SAM
Старшина
 
Сообщений: 45
Зарегистрирован: Пн май 24, 2004 5:33 am
Пункты репутации: 0

Пред.След.

Вернуться в Total Commander

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17

cron