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 

Рестарт/перезапуск TC
Goto page Previous  1, 2, 3, 4 ... 10, 11, 12  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon Feb 25, 2013 19:59    Post subject: Reply with quote

Avada wrote:
в отличие от кое-чего из предложенного ранее
И от чего же? Я пока не увидел.
Вот как я вижу то, что ещё может приблизится к понятию удобства и универсальности:

Code:
'============================================================
' Перезапуск ТС с возвратом к открытым в корне архивам,
' разным элементам в частично заблокированных вкладках
' и виртуальным папкам c правильной установкой курсора

' Условия:
' желательна последняя верcия TCFS2 с обновлениями TCFS2.ini
' необходима установка плагина TCFS2Tools

' Параметры: "%X%P%Z" "%T" ""%N"" ""%M""

' Flasher ©
'======================== Путь к TCFS2 ======================
TCFS2 = """%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe"""
'=============== Путь к ini c секциями истории ==============
HrIni = "%COMMANDER_PATH%\RedirectINI\History.ini"
'============================================================
With WScript.Arguments
  If .Count < 4 Then MsgBox "Параметры не соответствуют описанию!", 48 : WScript.Quit : End If
  LP = .Item(0) : RP = .Item(1) : N = .Item(2) : M = .Item(3)
End With : Set FSO = CreateObject("Scripting.FileSystemObject")

With CreateObject("WScript.Shell")
  .Run TCFS2 & " /ef tcm(582)", 0, True
  HrIni = .ExpandEnvironmentStrings(HrIni)
  .Run TCFS2 & " /ef ""set_ini(`" & HrIni & "`, Active, Left, L_isActive)""", 0, True
  Set OIni = FSO.OpenTextFile(HrIni, 1)
  All = OIni.ReadAll : OIni.Close : Set OIni = Nothing
  LH  = Split(All, "[LeftHistory]"  & vbNewLine & "0=")(1)
  RH  = Split(All, "[RightHistory]" & vbNewLine & "0=")(1)
  AP  = Split(All, "[Active]"    & vbNewLine & "Left=")(1)
  L   = Left(LH, InStr(LH, vbnewline) - 1)
  R   = Left(RH, InStr(RH, vbnewline) - 1)
  LA  = Left(AP, InStr(AP, vbnewline) - 1)
  All = "" : .Run TCFS2 & " /ef tcm(24340)", 0, True
End With

If LA Then Side = "/P=L" Else Side = "/P=R"
If FSO.FileExists(LP & N) Then LO = "\|" Else N = ""
If FSO.FileExists(RP & M) Then RO = "\|" Else M = "" : Set FSO = Nothing
If Right(L, 1) = "/" Then L = Left(L, Len(L) - 1) : LO = "" : N = "" : End If
If Right(R, 1) = "/" Then R = Left(R, Len(R) - 1) : RO = "" : M = "" : End If
If Len(L) > Len(LP) Then LM = Left(L, Len(L)-(Len(LP)-1))
If Len(R) > Len(RP) Then RM = Left(R, Len(R)-(Len(RP)-1))

Set ListL = CreateObject("Scripting.Dictionary")
Set ListR = CreateObject("Scripting.Dictionary")
With CreateObject("Shell.Application")
  Desk = "\\" & .NameSpace("C:\").ParentFolder.ParentFolder & "\"
  For Each i In Array(&Ha, &H3, &H4, &H11, &H12)
    ListL.Add .NameSpace(i).Self.Path & "|" & LP , ""
    ListR.Add .NameSpace(i).Self.Path & "|" & RP , ""
  Next
End With

Sub Run(Par, Keys)
  With CreateObject("WScript.Shell")
    Set TC = .Exec("""%COMMANDER_EXE%"" " & Par)
    PID = TC.ProcessID : Do : A = .AppActivate(PID) : Loop Until A
    WScript.Sleep 40 : .Exec(TCFS2 & " /ef tcm(2121) " & Keys)
  End With : WScript.Quit
End Sub

Act = """tcm(4002), eval(L_isActive) | tcm(4001)"""
If LA = 1 Then Key = "tcm(4001)" Else Key = "tcm(4002)"
If LP = Desk And RP = Desk Then
  Run Side, Act & " tcm(2121) delay(0)" & Act
ElseIf LP = Desk And R="::|" & RP Then Run "/R=""" & R & """ /P=L", Key
ElseIf RP = Desk And L="::|" & LP Then Run "/L=""" & L & """ /P=R", Key
ElseIf LP = Desk And ListR.Exists(R) Then Run "/R=" & RM & " /P=L", Key
ElseIf RP = Desk And ListL.Exists(L) Then Run "/L=" & LM & " /P=R", Key
ElseIf LP = Desk Then Run "/P=L /R=" & RP & M & RO, Key
ElseIf RP = Desk Then Run "/P=R /L=" & LP & N & LO, Key
ElseIf ListR.Exists(R) And L="::|" & LP Then Param = "/L=""" & L & """ /R=""" & RM & """ " & Side
ElseIf ListL.Exists(L) And R="::|" & RP Then Param = "/L=""" & LM & """ /R=""" & R & """ " & Side
ElseIf ListL.Exists(L) And ListR.Exists(R) Then Param = "/L="""&LM&""" /R=""" & RM & """ " & Side
ElseIf ListL.Exists(L) Then Param = "/R=""" & R & M & RO & """ /L=""" & LM & """ " & Side
ElseIf ListR.Exists(R) Then Param = "/L=""" & L & N & LO & """ /R=""" & RM & """ " & Side
Else Param = "/L=""" & L & N & LO & """ /R=""" & R & M & RO & """ " & Side
End If : CreateObject("WScript.Shell").Run """%COMMANDER_EXE%"" " & Param

Прошу протестировать.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.


Last edited by Flasher on Thu Feb 28, 2013 16:37; edited 4 times in total
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10236
Location: Россия, Саратов

Post (Separately) Posted: Mon Feb 25, 2013 20:56    Post subject: Reply with quote

Flasher
Результат запуска с кнопки в TC x32 (на x64 пока не смотрел):
Code:
---------------------------
Windows Script Host
---------------------------
Сценарий:   C:\Totalcmd\Utils\Scripts\Reload3.vbs
Строка:   21
Символ:   3
Ошибка:   Индекс выходит за пределы допустимого диапазона: '[number: 1]'
Код:   800A0009
Источник:    Ошибка выполнения Microsoft VBScript

---------------------------
ОК   
---------------------------

Причина — редирект секций [LeftHistory] и [RightHistory] из wincmd.ini в другой файл. При отключении редиректа этих секций перезапуск работает. Когда проверял более ранние версии этого скрипта с аналогичной функциональностью, было то же самое ограничение.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon Feb 25, 2013 21:46    Post subject: Reply with quote

Avada
Ага, точно. Позже исправлю.
Про результаты тестов всё же имелись в виду все нюансы возврата, а не просто "работает". Wink
И, кстати, функциональность нового не совсем аналогичная, в новом есть возможность возврата в виртуальный рабочий стол и установка курсора в нужной панели (в обычных папках - на нужном файле).
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.


Last edited by Flasher on Tue Feb 26, 2013 00:35; edited 1 time in total
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10236
Location: Россия, Саратов

Post (Separately) Posted: Mon Feb 25, 2013 22:51    Post subject: Reply with quote

Flasher
Нюансы возврата проверю и, если надо, распишу подробно обязательно, но предпочёл бы это сделать после исправления проблемы с редиректом — мне так гораздо удобнее.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon Feb 25, 2013 23:30    Post subject: Reply with quote

Avada
Ладно, сделал пока по-простому с указанием ini-файла с сециями истории. Надеюсь, обе секции у тебя в одном файле содержатся?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10236
Location: Россия, Саратов

Post (Separately) Posted: Tue Feb 26, 2013 19:42    Post subject: Reply with quote

Flasher
В одном, разумеется. Мне для всех редиректов больше одного файла и не надо.
Протестировал пока на двух машинах с XP. Возможно, из нижеперечисленного не всё и должно работать, но тем не менее отмечу следующее.
Локальные каталоги — запоминается и папка, и позиция курсора.
Вкладки с частичным закреплением — тут проблем опять же не вижу ни по папке, ни по позиции курсора.
Виртуальные папки проверял те, для которых есть встроенные команды в TC. Не сохраняется папка "Шрифты" (открывается предыдущая открытая перед ней папка). Прочие папки сохраняются, но их открытие происходит с задержкой в несколько секунд (где-то поменьше, как в папке "Корзина", где-то побольше, как в папке "Рабочий стол").
Среди открытых псевдопапок FS-плагинов у некоторых содержимое сохраняется нормально, у некоторых папка переоткрывается пустой, но в основной массе вместо этого открывается корень диска C (tcPhonebook, например, даже выводит сообщение, что не может войти в соответствущую папку, и только потом переключается на корневой каталог системного диска).
В архивах (ZIP, RAR и др.) всё нормально сохраняется на верхнем уровне. Если открыто что-то глубже — после перезапуска открывается каталог, содержащий архив.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Tue Feb 26, 2013 20:24    Post subject: Reply with quote

Avada
Спасибо за тест. В общем и целом всё верно.
В локальных папках должна запоминаться не одна позиция курсора, а обе, если они на файлах, конечно.
Про "Шрифты" писал ранее, тут ничего не исправишь.
Задержка на папке "рабочий стол" связано с переключением фокуса и вызовом внутренней команды ТС. Остальные должны быстрее открываться.
Про открытые псевдопапок в FS-плагинах понял, причина вроде на поверхности, но проблемного места пока не вижу.
Про глубину архивов и понятно. По-другому никак. В названии скрипта отмечено в части корней.
Есть ещё такой нюанс: если курсор установлен в обеих панелях на одном и том же файле или [..], то фокус будет слева. Это поправимо следующим образом: я могу в данный ini-файл писать дополнительную секцию и ключ с установкой значения 0/1 (активна правая/левая панель, соотв.). Если устроит, могу добавить.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10236
Location: Россия, Саратов

Post (Separately) Posted: Tue Feb 26, 2013 20:48    Post subject: Reply with quote

Flasher wrote:
Это поправимо следующим образом: я могу в данный ini-файл писать дополнительную секцию и ключ с установкой значения 0/1 (активна правая/левая панель, соотв.). Если устроит, могу добавить.

Пока точно не знаю, хотелось бы попробовать такой вариант, а там уже решить, удобно это или нет. А вообще у меня при старте TC всегда активна правая панель...

Flasher wrote:
В локальных папках должна запоминаться не одна позиция курсора, а обе, если они на файлах, конечно.

Для неактивного курсора — не запоминается (но я его отображаю через TWinKey — это не может влиять?).
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Wed Feb 27, 2013 13:59    Post subject: Reply with quote

Avada wrote:
А вообще у меня при старте TC всегда активна правая панель...
Имелось в виду, конечно, не слева, а в той панели, которая задана опционально при запуске ТС.
Поправил скрипт. По системным плагинам тоже. Обращаю внимание на параметры.

Avada wrote:
Для неактивного курсора — не запоминается (но я его отображаю через TWinKey — это не может влиять?).
Странно, проверил на трёх системах (2 ХР и 7) - везде запоминается. Твинки с выделением курсора в неактивной панели не влияет.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10236
Location: Россия, Саратов

Post (Separately) Posted: Wed Feb 27, 2013 15:09    Post subject: Reply with quote

Flasher
Не работает.
Code:
---------------------------
Windows Script Host
---------------------------
Сценарий:   C:\Totalcmd\Utils\Scripts\Reload3_2.vbs
Строка:   24
Символ:   33
Ошибка:   Предполагается наличие окончания инструкции
Код:   800A0401
Источник:    Ошибка компиляции Microsoft VBScript

---------------------------
ОК   
---------------------------

Flasher wrote:
Твинки с выделением курсора в неактивной панели не влияет.

Как выяснилось, влияет. Со стандартным неактивным курсором по предыдущей версии скрипта всё OK.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Wed Feb 27, 2013 15:45    Post subject: Reply with quote

Avada
А путь к ini на свой исправил?

Avada wrote:
Как выяснилось, влияет.
Значит, влияет что-то другое, не выделение.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10236
Location: Россия, Саратов

Post (Separately) Posted: Wed Feb 27, 2013 17:03    Post subject: Reply with quote

Flasher wrote:
А путь к ini на свой исправил?

Конечно, как и в предыдущем варианте.

Flasher wrote:
Значит, влияет что-то другое, не выделение.

Во всяком случае, если неактивный курсор задан опцией в TWinKey, его позиция не сохраняется, а если через настройки TC — сохраняется.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Wed Feb 27, 2013 18:34    Post subject: Reply with quote

Avada wrote:
Строка:   24
А что у тебя на 24 строке? Должно быть HrIni = .ExpandEnvironmentStrings(HrIni).

Avada wrote:
если неактивный курсор задан опцией в TWinKey, его позиция не сохраняется
Я проверял, у меня работает. Если в twinkey.ini установить только эту одну опцию, аналогичное поведение?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10236
Location: Россия, Саратов

Post (Separately) Posted: Wed Feb 27, 2013 19:49    Post subject: Reply with quote

Flasher wrote:
Если в twinkey.ini установить только эту одну опцию, аналогичное поведение?

Там одну только опцию установить не получится, надо ещё хотя бы цвет курсора задать. Но если это сделать — да, поведение аналогичное. Причём с и последней тестовой версией (4.2), и с последним релизом (1.105).

Flasher wrote:
Должно быть HrIni = .ExpandEnvironmentStrings(HrIni).

Да, но у меня это 21-я строка. На домашней машине ошибка указывает на 23-ю строку. Это HrIni & "`, Active, Left, 0)" "", 0, True. (На работе, видимо, пустая строка где-то в начале скрипта добавилась, потому что проблемная строка была по содержанию той же.)
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Wed Feb 27, 2013 21:49    Post subject: Reply with quote

Avada wrote:
Причём с и последней тестовой версией (4.2)
А если, скажем, взять 3.72?

В части ошибки скрипт поправил (скопипастил сперва неисправленный вариант, а там всего-то кавычку через пробел переставить надо было).
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
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, 4 ... 10, 11, 12  Next
Page 3 of 12

 
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