View previous topic :: View next topic |
Author |
Message |
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Mon Feb 25, 2013 19:59 Post subject: |
|
|
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 |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10255 Location: Россия, Саратов
|
(Separately) Posted: Mon Feb 25, 2013 20:56 Post subject: |
|
|
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 |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Mon Feb 25, 2013 21:46 Post subject: |
|
|
Avada
Ага, точно. Позже исправлю.
Про результаты тестов всё же имелись в виду все нюансы возврата, а не просто "работает".
И, кстати, функциональность нового не совсем аналогичная, в новом есть возможность возврата в виртуальный рабочий стол и установка курсора в нужной панели (в обычных папках - на нужном файле). _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Last edited by Flasher on Tue Feb 26, 2013 00:35; edited 1 time in total |
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10255 Location: Россия, Саратов
|
(Separately) Posted: Mon Feb 25, 2013 22:51 Post subject: |
|
|
Flasher
Нюансы возврата проверю и, если надо, распишу подробно обязательно, но предпочёл бы это сделать после исправления проблемы с редиректом — мне так гораздо удобнее. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Mon Feb 25, 2013 23:30 Post subject: |
|
|
Avada
Ладно, сделал пока по-простому с указанием ini-файла с сециями истории. Надеюсь, обе секции у тебя в одном файле содержатся? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10255 Location: Россия, Саратов
|
(Separately) Posted: Tue Feb 26, 2013 19:42 Post subject: |
|
|
Flasher
В одном, разумеется. Мне для всех редиректов больше одного файла и не надо.
Протестировал пока на двух машинах с XP. Возможно, из нижеперечисленного не всё и должно работать, но тем не менее отмечу следующее.
Локальные каталоги — запоминается и папка, и позиция курсора.
Вкладки с частичным закреплением — тут проблем опять же не вижу ни по папке, ни по позиции курсора.
Виртуальные папки проверял те, для которых есть встроенные команды в TC. Не сохраняется папка "Шрифты" (открывается предыдущая открытая перед ней папка). Прочие папки сохраняются, но их открытие происходит с задержкой в несколько секунд (где-то поменьше, как в папке "Корзина", где-то побольше, как в папке "Рабочий стол").
Среди открытых псевдопапок FS-плагинов у некоторых содержимое сохраняется нормально, у некоторых папка переоткрывается пустой, но в основной массе вместо этого открывается корень диска C (tcPhonebook, например, даже выводит сообщение, что не может войти в соответствущую папку, и только потом переключается на корневой каталог системного диска).
В архивах (ZIP, RAR и др.) всё нормально сохраняется на верхнем уровне. Если открыто что-то глубже — после перезапуска открывается каталог, содержащий архив. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Feb 26, 2013 20:24 Post subject: |
|
|
Avada
Спасибо за тест. В общем и целом всё верно.
В локальных папках должна запоминаться не одна позиция курсора, а обе, если они на файлах, конечно.
Про "Шрифты" писал ранее, тут ничего не исправишь.
Задержка на папке "рабочий стол" связано с переключением фокуса и вызовом внутренней команды ТС. Остальные должны быстрее открываться.
Про открытые псевдопапок в FS-плагинах понял, причина вроде на поверхности, но проблемного места пока не вижу.
Про глубину архивов и понятно. По-другому никак. В названии скрипта отмечено в части корней.
Есть ещё такой нюанс: если курсор установлен в обеих панелях на одном и том же файле или [..], то фокус будет слева. Это поправимо следующим образом: я могу в данный ini-файл писать дополнительную секцию и ключ с установкой значения 0/1 (активна правая/левая панель, соотв.). Если устроит, могу добавить. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10255 Location: Россия, Саратов
|
(Separately) Posted: Tue Feb 26, 2013 20:48 Post subject: |
|
|
Flasher wrote: | Это поправимо следующим образом: я могу в данный ini-файл писать дополнительную секцию и ключ с установкой значения 0/1 (активна правая/левая панель, соотв.). Если устроит, могу добавить. |
Пока точно не знаю, хотелось бы попробовать такой вариант, а там уже решить, удобно это или нет. А вообще у меня при старте TC всегда активна правая панель...
Flasher wrote: | В локальных папках должна запоминаться не одна позиция курсора, а обе, если они на файлах, конечно. |
Для неактивного курсора — не запоминается (но я его отображаю через TWinKey — это не может влиять?). _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Feb 27, 2013 13:59 Post subject: |
|
|
Avada wrote: | А вообще у меня при старте TC всегда активна правая панель... | Имелось в виду, конечно, не слева, а в той панели, которая задана опционально при запуске ТС.
Поправил скрипт. По системным плагинам тоже. Обращаю внимание на параметры.
Avada wrote: | Для неактивного курсора — не запоминается (но я его отображаю через TWinKey — это не может влиять?). | Странно, проверил на трёх системах (2 ХР и 7) - везде запоминается. Твинки с выделением курсора в неактивной панели не влияет. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10255 Location: Россия, Саратов
|
(Separately) Posted: Wed Feb 27, 2013 15:09 Post subject: |
|
|
Flasher
Не работает.
Code: | ---------------------------
Windows Script Host
---------------------------
Сценарий: C:\Totalcmd\Utils\Scripts\Reload3_2.vbs
Строка: 24
Символ: 33
Ошибка: Предполагается наличие окончания инструкции
Код: 800A0401
Источник: Ошибка компиляции Microsoft VBScript
---------------------------
ОК
--------------------------- |
Flasher wrote: | Твинки с выделением курсора в неактивной панели не влияет. |
Как выяснилось, влияет. Со стандартным неактивным курсором по предыдущей версии скрипта всё OK. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Feb 27, 2013 15:45 Post subject: |
|
|
Avada
А путь к ini на свой исправил?
Avada wrote: | Как выяснилось, влияет. | Значит, влияет что-то другое, не выделение. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10255 Location: Россия, Саратов
|
(Separately) Posted: Wed Feb 27, 2013 17:03 Post subject: |
|
|
Flasher wrote: | А путь к ini на свой исправил? |
Конечно, как и в предыдущем варианте.
Flasher wrote: | Значит, влияет что-то другое, не выделение. |
Во всяком случае, если неактивный курсор задан опцией в TWinKey, его позиция не сохраняется, а если через настройки TC — сохраняется. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Feb 27, 2013 18:34 Post subject: |
|
|
А что у тебя на 24 строке? Должно быть HrIni = .ExpandEnvironmentStrings(HrIni).
Avada wrote: | если неактивный курсор задан опцией в TWinKey, его позиция не сохраняется | Я проверял, у меня работает. Если в twinkey.ini установить только эту одну опцию, аналогичное поведение? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10255 Location: Россия, Саратов
|
(Separately) Posted: Wed Feb 27, 2013 19:49 Post subject: |
|
|
Flasher wrote: | Если в twinkey.ini установить только эту одну опцию, аналогичное поведение? |
Там одну только опцию установить не получится, надо ещё хотя бы цвет курсора задать. Но если это сделать — да, поведение аналогичное. Причём с и последней тестовой версией (4.2), и с последним релизом (1.105).
Flasher wrote: | Должно быть HrIni = .ExpandEnvironmentStrings(HrIni). |
Да, но у меня это 21-я строка. На домашней машине ошибка указывает на 23-ю строку. Это HrIni & "`, Active, Left, 0)" "", 0, True. (На работе, видимо, пустая строка где-то в начале скрипта добавилась, потому что проблемная строка была по содержанию той же.) _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Feb 27, 2013 21:49 Post subject: |
|
|
Avada wrote: | Причём с и последней тестовой версией (4.2) | А если, скажем, взять 3.72?
В части ошибки скрипт поправил (скопипастил сперва неисправленный вариант, а там всего-то кавычку через пробел переставить надо было). _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
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
|