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 

Single Post  Topic: Синхронная смена каталогов 
Author Message
Flasher



PostPosted: Thu Jan 04, 2018 23:34    Post subject: Reply with quote

ingerard
Более костыльный вариант (+ 1 дс), но беспроблемный для архивов:
Code:
'••••••••••••••••••••••••••••• VBS •••••••••••••••••••••••••••••
' Синхронное открытие одноимённых каталогов/архивов в панелях ТС
' Условие: требуется TCScript.dll
' Ключ запрета несинхронного открытия:  /n
' Ключ перехода в родительский каталог: /b
'•••••••••••••••••••••••••••••••••••••••••• Автор: Flasher © •••
Option Explicit : Dim FSO, TCS, Key, SP, TP, N, Ln
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TCS = CreateObject("TCScript.Helper")
Set Key = WSH.Arguments.Named
With TCS .Pause = 0 : .Wait = True : SP = .GetSrcPath
  TP = .GetInfo("TP") : N = .GetInfo("SN") : .LockTC True
  If N = ".." Or Key.Exists("b") Then
    If StrComp(FN(SP), FN(TP), 1) = 0 Then _
    Call Cm(2002)(4006)(2002)(4006) Else If Not Key.Exists("n") Then Cm(2002)
  Else Cm(2003)
    If Len(.GetSrcPath) - Len(SP) > 0 Then
      If .INIRead(.TCPath & "\usercmd.ini",  "em_cd", "param") <> "%Z%A" Then _
      .INIWriteSection .TCPath & "\usercmd.ini",  "em_cd", "cmd=cd" & vbCrLf & "param=%Z%A"
      Cm(4006) : .UserCmd "em_cd " & FN(N) : Ln = Len(.GetSrcPath) - Len(TP)
      Select Case True
        Case Ln > 0 Cm(4006)
        Case Ln < 0 Call Cm(570)(4006)(570)
        Case Ln = 0 Cm(4006) : If Key.Exists("n") Then Cm(570)
      End Select
    Else Cm(1001) End If
  End If : .LockTC False
End With : Set FSO = Nothing : Set TCS = Nothing
Function FN(x) FN = FSO.GetFileName(Replace(x, "\\\", "")) End Function
Function Cm(y) TCS.SendCommand y,1 : Set Cm = GetRef("Cm") End Function
В нижней рекомендации send({ESC}) заменил на tcm(4005).
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group