Wie man eine Verknüpfung (.LNK Datei) neu erstellen kann, haben wir Ihnen hier im vb@rchiv bereits mehrfach gezeigt. Heute geht es jedoch in erster Linie darum, die Eigenschaften einer bereits vorhandenen LNK-Datei zu ermitteln, um bspw. das Ziel zu aktualisieren und die Änderungen dann wieder zu speichern. Oftmals handelt es sich bei Verknüpfungen um Einträge im Windows-Start Menü (bspw. Programme). Wie man diese speziellen Ordner ermitteln kann, können Sie hier nachlesen: In unserem Tipp zum Auslesen der Verknüpfungs-Eigenschaften benötigen wir die Konstante sfidDRIVERS aus obigen Tipp. 1. Verknüpungs-Eigenschaften auslesen Dim oShell As Object Dim oLink As Object Dim sFile As String ' Pfad+Dateiname der Verknüpfung (lnk-Datei) sFile = GetSpecialFolder(sfidCOMMON_PROGRAMS) & "\MyApp\MyApp.exe" If Len(Dir$(sFile, vbNormal)) > 0 Then ' Verweis auf Shell32 via Late-Binding Set oShell = CreateObject("shell.application").NameSpace(sfidDRIVERS) ' Verknüpfungs-Eigenschaften lesen Set oLink = oShell.ParseName(sFile).GetLink ' Eigenschaften auslesen Debug.Print oLink.Path ' Ziel Debug.Print oLink.WorkingDirectory ' Ausführen in Debug.Print oLink.Arguments ' Aufrufparameter Debug.Print oLink.Description ' Beschreibung ' Objekte zerstören Set oLink = Nothing Set oShell = Nothing End If Um jetzt bspw. das Ziel einer Verknüpfung zu ändern brauchen wir einfach nur die Path-Eigenschaft des Link-Objekts zu ändern und anschließend die Save-Methode aufzurufen. Am besten wir verpacken das in eine universelle Funktion. ' Verknüpung aktualisieren / speichern Private Function LinkUpdate(ByVal sLinkFile As String, _ Optional ByVal sTargetFile As Variant, _ Optional ByVal sArguments As Variant, _ Optional ByVal sWorkingDir As Variant, _ Optional ByVal sDescription As Variant) As Boolean Dim oShell As Object Dim oLink As Object Dim F As Integer ' Feherlbehandlung On Error GoTo ErrHandler ' Verweis auf Shell32 via Late-Binding Set oShell = CreateObject("shell.application").NameSpace(sfidDRIVERS) ' Falls die Verknüpfung noch nicht existiert ' jetzte erstellen, damit die Eigenschaften gespeichert werden können If Len(Dir$(sLinkFile, vbNormal)) = 0 Then F = FreeFile Open sLinkFile For Output As #F Close #F End If ' Verknüpfungs-Eigenschaften lesen Set oLink = oShell.ParseName(sLinkFile).GetLink If Not IsMissing(sTargetFile) Then oLink.Path = sTargetFile ' Ziel If Not IsMissing(sArguments) Then oLink.Arguments = sArguments ' Aufrufparameter If Not IsMissing(sWorkingDir) Then oLink.WorkingDirectory = sWorkingDir ' Ausführen in If Not IsMissing(sDescription) Then oLink.Description = sDescription ' Beschreibung ' Geänderte Werte speichern oLink.Save ' Objekte zerstören Set oLink = Nothing Set oShell = Nothing LinkUpdate = True On Error GoTo 0 Exit Function ErrHandler: MsgBox "Fehler beim Speichern der Verknüpfungseigenschaften!" & vbCrLf & vbCrLf & _ "Fehler " & CStr(Err.Number) & vbCrLf & Err.Description, vbExclamation Set oLink = Nothing Set oShell = Nothing End Function Aufrufbeispiel: LinkUpdate "d:\test.lnk", "d:\MyApp\Anwendung.exe" |