Rubrik: COM/OLE/Registry/DLL · Verknüpfungen | VB-Versionen: VB4, VB5, VB6 | 06.06.03 |
Beliebige Verknüpfung auslesen Dieser Code zeigt, wie sich eine beliebige Verknüpfung (LNK-Datei) auslesen lässt. | ||
Autor: Dieter Otter | Bewertung: | Views: 35.736 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, Win8, Win10, Win11 | Beispielprojekt auf CD |
Vor einiger Zeit haben wir Ihnen gezeigt, wie sich eine beliebige Verknüpfung mit Hilfe der SHELLLNK.TLB-Funktionen erstellen lässt:
Beliebige Verknüpfungen erstellen
Und ebenfalls unter Verwendung der SHELLLNK.TLB-Funktionen lässt sich eine vorhandene Verknüpfung natürlich auch wieder auslesen
Fügen Sie hierzu nachfolgenden Code in ein Modul.
Option Explicit ' WindowState-Konstanten Public Enum eShowCmd ShowNormal = 1 ShowMaximized = 3 ShowMinimized = 7 End Enum ' Info-Struktur Public Type udtShellLink WorkingDir As String Path As String Arguments As String Description As String ShowCmd As eShowCmd End Type
Public Function ReadShellLink(ByVal sLinkFile As String) _ As udtShellLink ' Verknüpfung auslesen Dim cShellLink As ShellLinkA Dim cPersistFile As IPersistFile Dim sTemp As String Dim uData As WIN32_FIND_DATA ' Neue Objekt-Instanz erstellen Set cShellLink = New ShellLinkA Set cPersistFile = cShellLink ' Verknüpfungsdaten "laden" cPersistFile.Load StrConv(sLinkFile, vbUnicode), 0 With ReadShellLink ' Dateiname (inkl. Pfad) sTemp = Space$(256) cShellLink.GetPath sTemp, Len(sTemp), uData, 0 .Path = Left$(sTemp, InStr(sTemp, Chr$(0)) - 1) ' Arbeitsverzeichnis sTemp = Space$(256) cShellLink.GetWorkingDirectory sTemp, Len(sTemp) .WorkingDir = Left$(sTemp, InStr(sTemp, Chr$(0)) - 1) ' Parameter (Arguments) sTemp = Space$(256) cShellLink.GetArguments sTemp, Len(sTemp) .Arguments = Left$(sTemp, InStr(sTemp, Chr$(0)) - 1) ' Beschreibung (Kommentar) sTemp = Space$(256) cShellLink.GetDescription sTemp, Len(sTemp) .Description = Left$(sTemp, InStr(sTemp, Chr$(0)) - 1) ' Ausführen (Normal, Maximiert, Minimiert) sTemp = Space$(256) cShellLink.GetShowCmd .ShowCmd End With End Function
WICHTIG: Der Code funktioniert natürlich nur dann, wenn Sie auch einen Verweis auf die Datei SHELLLNK.TLB gesetzt haben.
Beispiel:
Dim uLink As udtShellLink uLink = ReadShellLink("c:\test.lnk") With uLink List1.AddItem "File/Path: " & .Path List1.AddItem "WorkingDir: " & .WorkingDir List1.AddItem "Arguments: " & .Arguments List1.AddItem "Description: " & .Description List1.AddItem "ShowCmd: " & _ Choose(.ShowCmd, "Normal", "", "Maximiert", "", "", "", "Minimiert") End With