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: Переход к содержимому файлу по lnk 
Author Message
Flasher



PostPosted: Tue Apr 21, 2020 01:37    Post subject: Reply with quote

Решил пару плюшек добавить помимо поддержки символических ссылок.
 Может работать из следующих виртуальных папок:
Может переходить к виртуальным папкам. Если на входе стоит mmc, то переходит к оснастке из параметра.
Code:
'================================== VBS ==================================
' Перейти к исходному объекту символической ссылки или ярлыка под курсором
' Параметры: %V [/R] [/T]         | /R — ключ для открытия в другой панели
'                                 | /T — ключ для открытия в новой вкладке
'==================================================== Автор: Flasher © ===
Option Explicit : Dim A, T, FSO, ShA, WSS, LT, PN, i, N, L
Set A = WSH.Arguments
If Right(A(0), 1) = "\" Then WSH.Quit
If A.Named.Exists("T") Then T = "/T "
If A.Named.Exists("R") Then T = T & "/R="
Set FSO = CreateObject("Scripting.FileSystemObject")
Set ShA = CreateObject("Shell.Application")
Set WSS = CreateObject("WScript.Shell")
If Left(A(0), 2) <> "\\" Then
  Set LT = ShA.NameSpace(0).ParseName(A(0))
Else  PN = FSO.GetParentFolderName(Mid(A(0), 3))
  For Each i in Array(0,5,46,47,53,54,55,"Profile","Public","Downloads","Programs",_
  "Links","My Video","My Pictures","My Music","Contacts","User Pinned","SavedGames",_
  "CommonDownloads","MusicLibrary","VideosLibrary","DocumentsLibrary","PicturesLibrary",_
  "::{7BE9D83C-A729-4D97-B5A7-1B7313C39E0A}","::{865E5E76-AD83-4DCA-A109-50DC2113CE9A}",_
  "::{D34A6CA6-62C2-4C34-8A7C-14709C1AD938}","::{323CA680-C24D-4099-B94D-446DD2D7249E}",_
  "::{ED50FC29-B964-48A9-AFB3-15EBB9B97F36}","::{B155BDF8-02F0-451E-9A26-AE317CFD7779}")
    If Not IsNumeric(i) Then i = "shell:" & i
    Set N = ShA.NameSpace(i) : If Not N Is Nothing Then _
    If PN = N Then Set LT = N.ParseName(FSO.GetFileName(Mid(A(0), 3))) : Exit For
  Next
  If Not IsObject(LT) Then Quit
End If
On Error Resume Next
If LT.IsLink And LCase(Right(A(0), 4)) = ".lnk" Then
  L = LT.GetLink.Target.Path
  If Err Then L = LT.ExtendedProperty("LinkTarget")
  If Left(L, 3) = "::{" Then
    Err.Clear : If ShA.NameSpace("shell:" & L) Is Nothing Then Quit
    If Err.Number Then Quit
  Else
    If Mid(L, 2, 2) <> ":\" Then Call Quit Else If Not Err Then _
    If FSO.GetFileName(L) = "mmc.exe" Then A = LT.GetLink.Arguments:_
    If Len(A) Then L = A End If : L = WSS.ExpandEnvironmentStrings(L)
    If FSO.FileExists(L) + FSO.FolderExists(L) = 0 Then Quit
  End If
Else L = LT.ExtendedProperty("LinkTarget") End If
If Not IsEmpty(L) Then WSS.Exec "%COMMANDER_EXE% /A /O /S " & T & """" & L & """"
Quit: Sub Quit: Set ShA = Nothing : Set FSO = Nothing : Set WSS = Nothing : WSH.Quit :End Sub

 2LonerD

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


Last edited by Flasher on Fri Apr 24, 2020 21:57; edited 9 times in total
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group