Flasher
|
Posted: Tue Apr 21, 2020 01:37 Post subject: |
|
|
Решил пару плюшек добавить помимо поддержки символических ссылок.
Может работать из следующих виртуальных папок: Рабочий стол
Администрирование
<Каталог пользователя>
Мои видеозаписи
Мои документы
Изображения
Моя музыка
Программы
Загрузки
Контакты
Избранное
Сохраненные игры
Ссылки
Общие
Общие видео
Общая музыка
Общие документы
Общие изображения
Общие загруженные файлы
Избранное (общ)
User Pinned
Programs Folder
Programs Folder and Fast Items
Common Places FS Folder
printhood delegate folder
delegate folder that appears in Computer
Библиотеки: Видео, Документы, Изображения, Музыка
Может переходить к виртуальным папкам. Если на входе стоит 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 Code: | if not ( WinExist("ahk_class TTOTAL_CMD") || WinActive("ahk_class TTOTAL_CMD") )
ExitApp | Не понимаю, зачем эти проверки, если и так ясно, окуда работа ведётся. Или были примеры, когда подобным скриптом начинают пользоваться не по назначению?
+ В 32 строке про ключ /A забыл, в то время как далее из папки предпочитаешь выходить, что в данном концепте считаю лишним.
Кстати, см. в соседней теме примеры, как фокусироваться из родителя. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Last edited by Flasher on Fri Apr 24, 2020 21:57; edited 9 times in total |
|