'============================================================
' Перезапуск ТС с возвратом к открытым в корне архивам,
' разным элементам в частично заблокированных вкладках
' и виртуальным папкам 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
|