Verknüpfung erstellen

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Niko Ortner.

    Gib uns mal bitte eine etwas genauere Fehlerbeschreibung als "Funktioniert nicht.", dann können wir auch versuchen, dir zu helfen.
    Da kannst Du wahrscheinlich nicht so viel dafür dass es nicht funktioniert. Sieht für mich nach 'nem alten VB6 Code aus (denn seit wann kann man die Argumentenklammer weglassen?). Darüber hinaus ist das alte Try-Catch-Spielchen wieder da. Das sollte man vermeiden.
    Ich schreibe den Code mal um, dass er bei mir funktioniert.

    VB.NET-Quellcode

    1. Public Sub CreateShortcut(ByVal LinkFileName As String, ByVal TargetFilePath As String, Optional ByVal CommandLineArgs As String = Nothing, Optional ByVal LinkDescription As String = Nothing, Optional ByVal TargetFileWorkingDirectory As String = Nothing)
    2. Dim oShell As New Shell32.Shell
    3. Dim oFolder As Shell32.Folder
    4. Dim oLink As Shell32.ShellLinkObject
    5. ' Ordner und Dateinamen extrahieren
    6. Dim sPath As String = IO.Path.GetDirectoryName(LinkFileName)
    7. Dim sFile As String = IO.Path.GetFileName(LinkFileName)
    8. ' Wichtig! Link-Datei erstellen (0 Bytes)
    9. Dim F As Integer = FreeFile()
    10. FileOpen(F, LinkFileName, OpenMode.Output)
    11. FileClose(F)
    12. oFolder = oShell.NameSpace(sPath)
    13. oLink = DirectCast(oFolder.Items.Item(sFile).GetLink, Shell32.ShellLinkObject)
    14. ' Eigenschaften der Verknüpfung
    15. oLink.Arguments = CommandLineArgs
    16. oLink.Description = LinkDescription
    17. oLink.WorkingDirectory = TargetFileWorkingDirectory
    18. oLink.Path = TargetFilePath
    19. ' Verknüpfung speichern
    20. oLink.Save()
    21. ' Objekte zerstören
    22. oLink = Nothing
    23. oFolder = Nothing
    24. oShell = Nothing
    25. End Sub
    26. Private Sub Initialize() Handles MyBase.Load
    27. CreateShortcut("C:\Users\Administrator\Desktop\Test.lnk", "C:\Brain.exe", "-selfdestruction", "Kill Brain.exe", "C:\")
    28. End Sub


    Short wurde zu Integer geändert, und das OptionStrict Off - Konstrukt "oLink = oFolder.Items.Item(sFile).GetLink" wurde zu "oLink = DirectCast(oFolder.Items.Item(sFile).GetLink, Shell32.ShellLinkObject)" geändert.
    Weiters wurden die Argumentenamen der Methode verändert, weil's einsichtiger ist als sLinkFile.
    Das Ganze ist nebenbei keine Funktion mehr sondern eine Methode. Wenn man die Argumente richtig angibt funktioniert es einwandfrei.
    Und die Try Catch Sache wurde auch entfernt.

    Sonst noch ein paar kleine Veränderungen.

    Hab's getestet und funktioniert wunderbar.

    Edit:
    Dein Code wäre wirklich interessant.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils