Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0074: Beliebige Verknüpfung erstellen

 von 

Beschreibung 

Mit dieser Funktion kann an beliebiger Stelle eine Verknüpfung zu einer beliebigen Datei vorgenommen werden. Eine Lösung ohne den Verweises auf die Shelllink gibt es in Tipp Tipp 503.

Dieser Tipp funktioniert entweder nur in kompilierter Form oder benötigt eine DLL/OCX-Datei. Diese Binärdateien sind dem Tipp hinzugefügt worden, um seinen Funktionsumfang darstellen zu können. Vor dem Upload wurden sie auf Viren geprüft.

Schwierigkeitsgrad:

Schwierigkeitsgrad 2

Verwendete API-Aufrufe:

keine

Download:

Download des Beispielprojektes [8 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Project1.vbp -------------
' Es muss ein Verweis auf 'VB 5 - IShellLinkA Interface(ANSI)' gesetzt werden.
' Die Komponente 'Microsoft Common Dialog Control 6.0 (SP3) (COMDLG32.OCX)' wird benötigt.

'--------- Anfang Formular "Form1" alias Form1.frm  ---------
' Steuerelement: Standarddialog-Steuerelement "CommonDialog1"
' Steuerelement: Schaltfläche "Command3"
' Steuerelement: Schaltfläche "Command2"
' Steuerelement: Textfeld "Text2"
' Steuerelement: Schaltfläche "Command1"
' Steuerelement: Beschriftungsfeld "Label3"
' Steuerelement: Beschriftungsfeld "Label1"
' Steuerelement: Beschriftungsfeld "Label2"


'Achtung die Funktion CreateLink benötigt 'SHELLLNK.TLB'
'Sollte sich diese nicht im Verzeichnis des Projekts
'befinden, kann sie auf der VB CD gefunden werden.

Option Explicit

Private Sub Form_Load()
    Label1.Caption = App.Path & IIf(Right(App.Path, 1) = "\", "", "\") & _
        "Project1.exe"
        
    Text2.Text = App.Path & IIf(Right(App.Path, 1) = "\", "", "\") & _
        "Test.lnk"
End Sub
  
Private Sub Command1_Click()
    If Len(Label1.Caption) > 0 And Len(Text2.Text) > 0 Then
        CreateLink Label1.Caption, Text2.Text
    End If
End Sub

Private Sub Command2_Click()
    CommonDialog1.Filter = "Alle (*.*)|*.*"
    CommonDialog1.InitDir = App.Path
    CommonDialog1.ShowOpen
    Label1.Caption = CommonDialog1.FileName
End Sub

Private Sub Command3_Click()
  Dim AA As String, BB As String
  Dim X As Long
  
  CommonDialog1.Filter = ("Alle (*.*)|*.*")
  CommonDialog1.InitDir = App.Path
  CommonDialog1.ShowOpen
  
  AA = CommonDialog1.FileName
  
  For X = Len(AA) To 1 Step -1
    BB = Mid$(AA, X, 1)
    If BB = "\" Then Exit For
  Next X
  
  Text2.Text = Left$(AA, X) & "Test.lnk"
End Sub
  
Private Function CreateLink(Datei$, LinkName$)
    Dim cShellLink As ShellLinkA
    Dim cPersistFile As IPersistFile

    Set cShellLink = New ShellLinkA
    Set cPersistFile = cShellLink
    
    cShellLink.SetPath Datei
    cPersistFile.Save StrConv(LinkName, vbUnicode), 0
   
    Set cPersistFile = Nothing
    Set cShellLink = Nothing
End Function
'---------- Ende Formular "Form1" alias Form1.frm  ----------
'-------------- Ende Projektdatei Project1.vbp --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 7 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von Dietrich Hinkelmann am 16.02.2008 um 11:51

Hallo,
das Einsetzen des Links erfolgt problemlos.
Der Pfad für die Programmumgebung wird aber nicht festgelegt. Meine Programme finden dann natürlich die dazugehörigen Dateien nicht.
Wie kann ich das Textfeld "Ausführen in" in "Eigenschaften" des Links mit der Pfadangabe füllen?
MfG
Dietrich Hinkelmann

Kommentar von Johannes M. Pfeiffer am 25.06.2002 um 21:21

Hallo,
unter Tipp 503 seht Ihr eine Möglichkeit eine Verknüpfung ohne die TLB Datei zu erstellen.
Gruß,
Johannes M. Pfeiffer

Kommentar von wulle am 17.03.2002 um 16:02

Hi Gerome,
Du musst im VB-Menu Projekt-Verweise einen neuen Verweis zur Datei
ShellLnk.tlb
anlegen.
Die Datei findest du auf der VB-CD unter \Tools\Unsupprt\Shelllnk\.
Das wars.

Kommentar von Gerome am 15.02.2002 um 13:42

Wie registriet man eigentlich eine TLB-Datei, damit man sie in VB nutzen kann?

Kommentar von Stephan muller am 25.08.2001 um 20:24

hmmm bei mir funktioniert das leider nicht.

Kommentar von Konrad Danner am 05.01.2001 um 15:56

Um eine Programmgruppe und eine Programmverknüpfung zu erstellen, kann man folgende Zeilen verwenden:
Private Sub Command1_Click()
Dim Linkitem$, Titel$, Datei$
Form1.Text1.LinkTopic = "ProgMan|Progman"
Form1.Text1.LinkMode = 2 'manuell
Titel$ = "Test-Programmgruppe" 'Titel der Programmgruppe
Linkitem$ = "[CreateGroup(" + Titel$ + ")]"
Form1.Text1.LinkExecute Linkitem$ 'Programmgruppe anlegen
Datei$ = """c:\windows\All Users\Anwendungsdaten\Symantec\pcAnywhere\direkt.bhf"""
Titel$ = "Fernwartung" 'Titel der Verknüpfung
Linkitem$ = "[AddItem(" + Datei$ + ", " + Titel$ + ")]"
Form1.Text1.LinkExecute Linkitem$

Kommentar von hazor am 22.10.2000 um 22:49

hi leutz,
weiß auch jemand wie es ohne die tlb-datei geht, mit default api's oder manuell???
thx
ci@o