Rubrik: OLE/Registry/DLL · Verknüpfungen | VB-Versionen: VB.NET | 12.03.07 |
Beliebige Verknüpfungen erstellen (.NET) Mit dieser Funktion lässt sich eine beliebige Datei-Verknüpfung erstellen. | ||
Autor: Dieter Otter | Bewertung: | Views: 41.044 |
www.tools4vb.de | System: WinNT, Win2k, WinXP, Win7, 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. Am einfachsten ist es, wenn man sich den Funktionen der System-DLL shell32.dll bedient. Fügen Sie Ihrem Projekt als erstes den COM-Verweis Microsoft Shell Controls And Automation hinzu und übernehmen anschließend nachfolgenden Funktionscode in Ihr Projekt:
Public Function CreateShortcut(ByVal sLinkFile As String, _ ByVal sTargetFile As String, _ Optional ByVal sArguments As String = "", _ Optional ByVal sDescription As String = "", _ Optional ByVal sWorkingDir As String = "") As Boolean Try Dim oShell As New Shell32.Shell Dim oFolder As Shell32.Folder Dim oLink As Shell32.ShellLinkObject ' Ordner und Dateinamen extrahieren Dim sPath As String = sLinkFile.Substring(0, sLinkFile.LastIndexOf("\")) Dim sFile As String = sLinkFile.Substring(sLinkFile.LastIndexOf("\") + 1) ' Wichtig! Link-Datei erstellen (0 Bytes) Dim F As Short = FreeFile() FileOpen(F, sLinkFile, OpenMode.Output) FileClose(F) oFolder = oShell.NameSpace(sPath) oLink = oFolder.Items.Item(sFile).GetLink ' Eigenschaften der Verknüpfung With oLink If sArguments.Length > 0 Then .Arguments = sArguments If sDescription.Length > 0 Then .Description = sDescription If sWorkingDir.Length > 0 Then .WorkingDirectory = sWorkingDir .Path = sTargetFile ' Verknüpfung speichern .Save() End With ' Objekte zerstören oLink = Nothing oFolder = Nothing oShell = Nothing Return True Catch ex As Exception ' Fehler! ggf. Link-Datei löschen, falls bereit erstellt If System.IO.File.Exists(sLinkFile) Then Kill(sLinkFile) Return False End Try End Function
Parameterbeschreibung:
sLinkFile | Name und Ort der Verknüpfungsdatei (.lnk) |
sTargetFile | Pfad+Dateiname der Anwendung, welche über die Verknüpfung ausgeführt werden soll |
sArguments | Optional. Parameter für den Aufruf der Anwendung |
sDescription | Optional. Beschreibung (wird im Eigenschaften-Dialog der Verknüpfung angezeigt) |
sWorkingDir | Optional. Pfad, in welchem die Anwendung ausgeführt werden soll (Arbeitsverzeichnis) |
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 CreateShortcut "c:\test.lnk", "c:\winnt\notepad.exe"
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.)
Diese Systemordner lassen sich über die Environment.SpecialFolder Aufzählung leicht ermitteln.
So lässt sich z.B. eine Verknüpfung auf dem Desktop folgendermassen erstellen:
CreateShortcut Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & _ "\MeinNotepad.lnk", "c:\winnt\notepad.exe"
Ab sofort sollte das Erstellen von Dateiverknüpfungen also keine Probleme mehr bereiten