Rubrik: Dateisystem · Dateien allgemein | VB-Versionen: VB4, VB5, VB6 | 12.09.01 |
Beliebige Verknüpfungen erstellen Mit Hilfe der undokumentierten SHELLLNK.TLB lassen sich schnell und unkompliziert beliebige Verknüpfungen erstellen. | ||
Autor: Dieter Otter | Bewertung: | Views: 86.494 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, Win8, Win10, Win11 | Beispielprojekt auf CD |
Ein häufiges Problem für viele Programmierer ist das Erstellen von Dateiverknüpfungen - sei es auf dem Desktop, im Startmenü unter Programme oder in einem x-beliebigen Ordner auf der Festplatte. Bei dieser Art von Verknüpfung handelt es sich um sogenannte Link-Dateien (*.lnk), über welche man per Doppelklick eine bestimmte Anwendung aktivieren kann.
Nun, so schwer ist das ganze eigentlich nicht. Denn Microsoft hat u.a. auf der VB-Installations CD eine undokumentierte TLB-Datei bereitgestellt, mit der sich solche Verknüpfungen relativ leicht erstellen lassen. Hierbei handelt es sich um die SHELLLNK.TLB. Sollten Sie diese nicht finden, so können Sie sich die Datei auch hier bei uns downloaden: SHELLLNK.TLB (6 KB)
Und so funktioniert's:
Fügen Sie in Ihrem Projekt zunächst den Verweis auf die SHELLLNK.TLB ein (Menü Projekt - Verweise...). Jetzt brauchen Sie nur noch die nachfolgende Prozedur in ein Modul einzufügen:
' Verknüpfung erstellen Public Sub CreateLink(ByVal Datei As String, _ ByVal LinkName As String, _ Optional ByVal Parameter As String = "", _ Optional ByVal Comment As String = "", _ Optional ByVal WorkingDir As String = "" Optional ByVal IconPath As String = "", _ Optional ByVal IconNumber As Long = 0) Dim cShellLink As ShellLinkA Dim cPersistFile As IPersistFile Set cShellLink = New ShellLinkA Set cPersistFile = cShellLink With cShellLink ' Pfad+Dateiname der Anwendung .SetPath Datei ' Parameter If Parameter <> "" Then _ .SetArguments Parameter ' Kommentar If Comment <> "" Then _ .SetDescription Comment ' Arbeitsverzeichnis (Ausführen in) If WorkingDir <> "" Then _ .SetWorkingDirectory WorkingDir ' Icon definieren If IconPath <> "" And IconNumber > 0 Then _ .SetIconLocation IconPath, IconNumber End With ' Verknüpfung erstellen cPersistFile.Save StrConv(LinkName, _ vbUnicode), 0 Set cPersistFile = Nothing Set cShellLink = Nothing End Sub
Parameterbeschreibung:
Datei | Pfad+Dateiname der Anwendung, welche über die Verknüpfung ausgeführt werden soll |
Link | Name und Ort der Verknüpfungsdatei (.lnk) |
Parameter | Optional. Parameter für den Aufruf der Anwendung |
Comment | Optional. Kommentar (wird im Eigenschaften-Dialog der Verknüpfung angezeigt) |
WorkingDir | Optional. Pfad, in welchem die Anwendung ausgeführt werden soll (Arbeitsverzeichnis) |
IconPath | Optional. Pfad zur Datei, aus der das gewünschte Symbol verwendet werden soll |
IconNumber | Optional. Nummer des Icons aus der in IconPath angegebenen Datei |
Beispiel:
Um nun eine Verknüpfung zu erstellen, rufen Sie die Prozedur folgendermassen auf:
' Verknüpfung zum Windows-Editor im ' Root-Verzeichnis von C: mit dem Namen test.lnk CreateLink "c:\winnt\notepad.exe", "c:\test.lnk"
Erweiterung des Tipps
Der Tipp lässt sich noch dahingehend erweitern, dass man für das Ziel der Verknüpfung einen bestimmten Systemordner angeben kann (z.B. Desktop, Programme im Start-Menü, usw.)
Wie man den genauen Pfad der System-Ordner ermittelt, haben wir Ihnen ja bereits in einem früheren Tipp gezeigt. Deshalb hier nur der Verweis auf den Tipp: Standard System-Ordner ermitteln
So lässt sich z.B. eine Verknüpfung auf dem Desktop folgendermassen erstellen:
CreateLink "c:\winnt\notepad.exe", _ GetSpecialFolder(sfidDESKTOP) & "\MeinNotepad.lnk"
Und hier der Aufruf, bei dem für die Verknüpfung das 22. Bildsymbol der Datei Moricons.dll verwendet werden soll:
CreateLink "c:\winnt\notepad.exe", "c:\Test.lnk", _ , , , "C:\WINNT\system32\moricons.dll", 22
Ab sofort sollte das Erstellen von Dateiverknüpfungen also keine Probleme mehr bereiten