.dll Ort

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Dancger.

    Hallo zusammen

    Mein Programm, das auf dem Desktop liegt, benötigt die Interop.Shell32.
    Ich erstelle eine Veknüpfung, dieser Code:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Function CreateShortcut(ByVal sLinkFile As String, _
    2. ByVal sTargetFile As String, _
    3. Optional ByVal sArguments As String = "", _
    4. Optional ByVal sDescription As String = "", _
    5. Optional ByVal sWorkingDir As String = "") As Boolean
    6. Try
    7. Dim oShell As New Shell32.Shell
    8. Dim oFolder As Shell32.Folder
    9. Dim oLink As Shell32.ShellLinkObject
    10. ' Ordner und Dateinamen extrahieren
    11. Dim sPath As String = sLinkFile.Substring(0, sLinkFile.LastIndexOf("\"))
    12. Dim sFile As String = sLinkFile.Substring(sLinkFile.LastIndexOf("\") + 1)
    13. ' Wichtig! Link-Datei erstellen (0 Bytes)
    14. Dim F As Short = FreeFile()
    15. FileOpen(F, sLinkFile, OpenMode.Output)
    16. FileClose(F)
    17. oFolder = oShell.NameSpace(sPath)
    18. oLink = oFolder.Items.Item(sFile).GetLink
    19. ' Eigenschaften der Verknüpfung
    20. With oLink
    21. If sArguments.Length > 0 Then .Arguments = sArguments
    22. If sDescription.Length > 0 Then .Description = sDescription
    23. If sWorkingDir.Length > 0 Then .WorkingDirectory = sWorkingDir
    24. .Path = sTargetFile
    25. ' Verknüpfung speichern
    26. .Save()
    27. End With
    28. ' Objekte zerstören
    29. oLink = Nothing
    30. oFolder = Nothing
    31. oShell = Nothing
    32. Return True
    33. Catch ex As Exception
    34. ' Fehler! ggf. Link-Datei löschen, falls bereit erstellt
    35. If System.IO.File.Exists(sLinkFile) Then Kill(sLinkFile)
    36. Return False
    37. End Try
    38. End Function

    Solange die .dll auf dem Desktop liegt, kann ich das Programm starten und es funktioniert alles wie es sollte.
    Wenn ich sie aber verschiebe, dann geht nichts mehr.

    Ich möchte sie irgendwo zu den anderen Windows dll's schmeissen.
    Wie ändere ich den Pfad?

    Mfg Dancger
    MESS WITH THE BEST, DIE LIKE THE REST! :evil:
    n'paar Links: DNS Tools, Steal WA DB, Droidsheep...
    Interop.*.dll
    sind dlls, die die Umgebung automatisch generiert, wenn Du ein OCX oder eine andere COM-Komponente zu Deinem Projekt hinzufügst.
    Du musst (leider) diese DLL so behandeln, als gehörte sie unmittelbar zu Deinem Projekt, sie muss also unmittelbar neben der exe liegen.
    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!

    RodFromGermany schrieb:

    Du musst (leider) diese DLL so behandeln, als gehörte sie unmittelbar zu Deinem Projekt, sie muss also unmittelbar neben der exe liegen.

    Das'n Witz oder? O.o
    Ich mag keine .dll's auf'm Desktop ...

    Hmm.. ich könnte ja ein 2tes Programm, wie ein Setup schreiben, das mir die Anwendung von den Resourcen irgendwohin kopiert und mir dann eine Verknüpfung auf den Desktop macht =)
    Da fällt mir ein, für das braucht man die schon wieder... -.-"

    Was hab ich für Möglichkeiten, es muss ohne richtigen Setup sein, aber eine Verknüpfung oder das Programm selber sollte ohne interop auf'm Desktop sein.

    Evtl. ein .bat Skript?

    Mfg Dancger
    MESS WITH THE BEST, DIE LIKE THE REST! :evil:
    n'paar Links: DNS Tools, Steal WA DB, Droidsheep...
    Es ist so, ich hab auch schon mal versucht, ohne Interop.*.dll zu arbeiten. :S
    Für mich gehören auf den Desktop keine Programme, sondern nur Verknüpfungen. Da sieht es wohl nach einer ordentlichen Installation aus.
    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!

    RodFromGermany schrieb:

    Für mich gehören auf den Desktop keine Programme, sondern nur Verknüpfungen.

    Klar, die meistens schon, aber stell dir vor, ich kopier doch keine Verknüpfung einer Worddatei auf den Desktop O.o
    Eine "1-Mann" Datei gehört einfach auf den Desktop =P

    Kennst du einen anderen Weg, eine Verknüpfung zu erstellen, ohne eine dll?

    Würde das gehen, wenn ich eine .bat schriebe, die ausführe und nachdem die Verknüpfung angelegt wurde, wieder lösche?

    Mfg Dancger
    MESS WITH THE BEST, DIE LIKE THE REST! :evil:
    n'paar Links: DNS Tools, Steal WA DB, Droidsheep...