Verknüpfungen erstellen/bearbeiten

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Murdoc.

    Verknüpfungen erstellen/bearbeiten

    Hallo liebe VB-Paradise Comunity,

    Ich möchte gerne in einem Projekt per Button klick eine Verknüpfung erstellen zu einem Spiel um das in Widescreen zu spielen was nur über eine verknüpfung geht. Wichtig ist das ende des Ziel die folgenden Parameter stehen:

    "C:\Spiele\Battlefield 2142\BF2142.exe" +menu 1 +widescreen 1 +szx 1920 +szy 1080

    Einen funktionierenden Code zum erstellen einer Verknüpfung habe ich schon gefunden:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Try
    2. ' Das Shell-Objekt des Windows Script Hosts erstellen.
    3. Dim WSHShell As Object = CreateObject("WScript.Shell")
    4. Dim DesktopDir As String = CType(WSHShell.SpecialFolders.Item("Desktop"), String)
    5. Dim Shortcut As Object
    6. 'Verknüpfungen verfügen über die Erweiterung *.lnk (Link).
    7. 'Diese muss mit angegeben werden
    8. Shortcut = WSHShell.CreateShortcut(DesktopDir & "\BF2142-Widescreen.lnk")
    9. 'es werden nun noch die Eigenschaften des Links festgelegt.
    10. ' Shortcut.TargetPath = wohin verweist der ShortCut
    11. ' Shortcut.HotKey = tastenkombination zum Aufruf des Links
    12. ' Shortcut.Description = Beschreibung
    13. ' Shortcut.WorkingDirectory = Arbeitsverzeichnis
    14. 'Anlegen des ShortCut
    15. Shortcut.TargetPath = "C:\Spiele\Battlefield 2142\BF2142.exe"
    16. Shortcut.WindowStyle = 2
    17. Shortcut.Hotkey = ""
    18. Shortcut.Description = ""
    19. Shortcut.WorkingDirectory = "C:\Spiele\Battlefield 2142"
    20. 'Ein Icon zuweisen.
    21. 'Entweder aus der Anwendung, aus einer Exe oder Dll Datei
    22. 'Achtung:
    23. 'Es wird mit 0 mit dem Zählen angefangen
    24. Shortcut.IconLocation = "C:\Spiele\Battlefield 2142\BF2142.exe"
    25. ' Verknüpfungsdatei speichern.
    26. Shortcut.Save()
    27. Catch ex As Exception
    28. MessageBox.Show("Der ShortCut auf dem Desktop konnte nicht erstellt werden. " & vbCrLf & _
    29. ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Information)
    30. End Try


    Mein Problem liegt jetzt nur bei

    VB.NET-Quellcode

    1. Shortcut.TargetPath = "C:\Spiele\Battlefield 2142\BF2142.exe"

    Ich weiß nicht wie ich da die Parameter (+menu 1 +widescreen 1 +szx 1920 +szy 1080) reinbekomme,
    da die fertige Verknüpfung immer noch Anführungszeichen am anfang und am ende setzt. so funktinoert es leider nicht:

    VB.NET-Quellcode

    1. Shortcut.TargetPath = "C:\Spiele\Battlefield 2142\BF2142.exe +menu 1 +widescreen 1 +szx 1920 +szy 1080"


    Ich hoffe ihr könnt mir helfen :)

    mfg Krogjan
    Leider ist Dein Code kein funktionierender Code. Option Strict Off Code ist in meinen Augen nicht funktional.

    Setze in Deinem Projekt einen Verweis auf:

    Windows Script Host Object Model

    zu finden in dem Reiter COM.

    VB.NET-Quellcode

    1. Imports IWshRuntimeLibrary
    2. Public Class Form1
    3. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    4. Dim shell As New IWshShell_Class
    5. Dim desktop As String = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
    6. Dim shortCut As IWshShortcut = DirectCast(shell.CreateShortcut(IO.Path.Combine(desktop, "test.lnk")), IWshShortcut)
    7. shortCut.TargetPath = "c:\test.exe"
    8. shortCut.Save()
    9. End Sub
    10. End Class
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Hallo Korgjan und SpaceyX,

    ich hatte gerade das selbe Problem. Leider funktioniert dein Quellcode nur bei einfachen Verknüpfungen ohne der Übergabe von Parametern.

    VB.NET-Quellcode

    1. shortCut.TargetPath = "c:\t e s t.exe -IchBinEinParameter"

    führt zu der ungültigen Verknpüfung: "c:\t e s t.exe -IchBinEinParameter"
    Die Leerzeichen sind Absicht!

    Ich habe zwischenzeitlich dafür eine Einfache Lösung gefunden:

    VB.NET-Quellcode

    1. ​shortCut.TargetPath = "c:\t e s t.exe
    2. shortCut.Arguments = "-IchBinEinParameter"

    Dies führt zu dem Gewünschten funktionsfähigen Link
    "c:\t e s t.exe" -IchBinEinParameter
    Wer nichts weiß ist nicht Dumm sondern unwissend!
    VB.NET Neueinsteuger... aber natürlich immer in "Option Explicit" - sonst lernt man nit!

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Darkscale“ ()

    Das IWshShortcut-Interface stellt die Property Arguments zur Verfügung. Ich denke das ist, was Du suchst.

    VB.NET-Quellcode

    1. Imports IWshRuntimeLibrary
    2. Public Class Form1
    3. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    4. Dim shell As New IWshShell_Class()
    5. Dim path As String = IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "test.lnk")
    6. Dim sC As IWshShortcut = DirectCast(shell.CreateShortcut(path), IWshShortcut)
    7. sC.TargetPath = "c:\test.exe"
    8. sC.Arguments = "param1"
    9. sC.Save()
    10. End Sub
    11. End Class
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    @ErfinderDesRades Ich nehme mal an, dass der TE gerade den ultimativen Installer erfindet. ;)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!