Public Function getNameFromLink(fnm As String) As String
Dim lBuffLen As Long
Dim cShellLink As ShellLinkA ' An explorer IShellLink instance
Dim cPersistFile As IPersistFile ' An explorer IPersistFile instance
Dim fd As WIN32_FIND_DATA
Dim sExeFile As String
sExeFile = Space$(MAX_PATH)
lBuffLen = Len(sExeFile)
On Error Resume Next
Set cShellLink = New ShellLinkA ' Create new IShellLink interface
Set cPersistFile = cShellLink ' Implement cShellLink's IPersistFile interface
cPersistFile.Load StrConv(fnm, vbUnicode), STGM_DIRECT
cShellLink.GetPath sExeFile, lBuffLen, fd, SLGP_UNCPRIORITY
getNameFromLink = Trim$(sExeFile)
Set cPersistFile = Nothing
Set cShellLink = Nothing
End Function
Но, чёй-то мне этот способ не очень нравится. Работает, конечно, безотказно, но это - как из пушки по воробьям.
ANDLL
Оно конечно хочется открыть файл и прочитать из него пару байтов, ибо кажется что это работает быстрее и вообще куда круче.
На самом деле lnk - внутренний формат, который вообще может меняться даже внутри версии операционной системы, поэтому читать его "руками" значит в конце концов найти ситуацию, в которой твоя программа не сможет правильно сработать.
Так что куда лучше "поднимать все эти интерфейсы", чем читать самому.
Оно конечно хочется открыть файл и прочитать из него пару байтов, ибо кажется что это работает быстрее и вообще куда круче.
На самом деле lnk - внутренний формат, который вообще может меняться даже внутри версии операционной системы, поэтому читать его "руками" значит в конце концов найти ситуацию, в которой твоя программа не сможет правильно сработать.
Так что куда лучше "поднимать все эти интерфейсы", чем читать самому.
А вроде бы нет. Какой смысл его менять?вроде бы lnk-формат немного отличается на разных версиях винды...
Dim w As Object, S As Object
Set w = CreateObject("WScript.Shell")
Set S = w.CreateShortcut(Data.Files(1))
Debug.Print s.TargetPath
Set S = Nothing
Set w = Nothing
kibernetics писал(а):вроде бы lnk-формат немного отличается на разных версиях винды...
я просто писал программу, которая работает с ссылкой ярлыка и однажды напоролся на "недопонимание"
Сейчас этот форум просматривают: SemrushBot и гости: 86