| |
Fortgeschrittene ProgrammierungRe: LNK-Verknüpfung mit Icon erstellen | | | Autor: michi-bib | Datum: 05.08.04 09:39 |
| Hallo Sebastian,
ich mach das eigentlich immer mit der folgenden Funktion:
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)
Dim oShell As New Shell32.Shell
Dim oFolder As Shell32.Folder
Dim oLink As Shell32.ShellLinkObject
Dim sPath As String
Dim sFile As String
Dim F As Integer
On Error Resume Next
'Ordner und Dateiname extrahieren
sPath = Left$(sLinkFile, InStrRev(sLinkFile, "\") - 1)
sFile = Mid$(sLinkFile, InStrRev(sLinkFile, "\") + 1)
'Link-Datei mit 0 Bytes erstellen, da die Link-Datei bereits voranden sein
' muss
F = FreeFile
Open sLinkFile For Output As #F
Close #F
Set oFolder = oShell.NameSpace(sPath)
Set oLink = oFolder.Items.Item(sFile).GetLink
'Eigenschaften der Verknüpfung
With oLink
If sArguments <> "" Then .Arguments = sArguments
If sDescription <> "" Then .Description = sDescription
If sWorkingDir <> "" Then .WorkingDirectory = sWorkingDir
.Path = sTargetFile
'Verknüpfung speichern
.Save
End With
'Objekte zerstören
Set oLink = Nothing
Set oFolder = Nothing
Set oShell = Nothing
End Function Aufruf dann z.B:
Call CreateShortcut(App.path + "\MyApp.lnk", App.path + "\MyApp.exe", , _
"MyApp", App.path) Du musst dazu unter Menu Projekt/Verweise noch deinem Projekt
die Microsoft Shell Controls and Automation hinzufügen.
Gru? Michi aus Hannover
1 + 1 = 3 f?r hinreichend gro?e 1 | |
Re: LNK-Verknüpfung mit Icon erstellen | | | Autor: michi-bib | Datum: 06.08.04 18:48 |
| Hi Sebastian,
ich habe eben erst wieder Internet zur Verfügung, deshalb jetzt erst Antwort.
Hab mich nochmal mit dem Thema beschäftigt und die Funktion um den
Parameter "sICOFile" erweitert.
Meine Forschungen haben bisher folgendes ergeben:
Standardmäßig wird wohl das (erste) Icon des Targetfiles verwendet.
Mit der Methode setIconLocation des ShellLinkObjects kann man aber
auch was anderes einstellen:
Wenn der Targetfile beispielsweise mehrere Icons enthält, könnte man
z.B. das dritte als Symbol des Links verwenden (Parameter "ilIcon" der
Methode setIconLocation = 3)
Wenn man eine separate ico-Datei verwenden möchte, scheint dort der
derselbe Parameter mit Wert = 0 zu funktionieren.
Zum Testen hab ich mir mal auf'm Desktop 'ne Verknüpfung
(Win2000 SP4, VB6 SP6) angelegt so:
Private Sub Command3_Click()
Call CreateShortcut("C:\Dokumente und Einstellungen\All" & _
"Users\Desktop\MyApp.lnk", App.Path + "\MyApp.exe", App.Path + _
"\Icons\MyIcon.ico", , "MyApp")
End Sub
Public Function CreateShortcut(ByVal sLinkFile As String, ByVal sTargetFile As _
String, Optional sICOFile As String, Optional ByVal sArguments As String, _
Optional ByVal sDescription As String, Optional ByVal sWorkingDir As String)
Dim oShell As New Shell32.Shell
Dim oFolder As Shell32.Folder
Dim oLink As Shell32.ShellLinkObject
Dim sPath As String
Dim sFile As String
Dim F As Integer
On Error Resume Next
'Ordner und Dateiname extrahieren
sPath = Left$(sLinkFile, InStrRev(sLinkFile, "\") - 1)
sFile = Mid$(sLinkFile, InStrRev(sLinkFile, "\") + 1)
'Link-Datei mit 0 Bytes erstellen, da die Link-Datei bereits voranden sein muss
F = FreeFile
Open sLinkFile For Output As #F
Close #F
Set oFolder = oShell.NameSpace(sPath)
Set oLink = oFolder.Items.Item(sFile).GetLink
'Eigenschaften der Verknüpfung
With oLink
If sICOFile <> "" Then .SetIconLocation sICOFile, 0
If sArguments <> "" Then .Arguments = sArguments
If sDescription <> "" Then .Description = sDescription
If sWorkingDir <> "" Then .WorkingDirectory = sWorkingDir
.Path = sTargetFile
'Verknüpfung speichern
.Save
End With
'Objekte zerstören
Set oLink = Nothing
Set oFolder = Nothing
Set oShell = Nothing
End Function Zusatzinfo ---> Ich weiß zwar nicht ob, dies hier jetzt 'nen "Profitip" ist, vielleicht kennst
du's ja auch schon: Wenn du den Verweis auf die Shell Components and
Automation in deinem Projekt hast, click mal in der Entwicklungsumgebung
auf Menu Ansicht/Objektkatalog. In der ComboBox, in der steht "Alle Bibliotheken",
wählst du "shell32" aus. Dann wird dir angezeigt, was da alles für Objekte drinnen
sind. Dort wählst du dann das ShellLinkObjekt aus und bekommst dort alle
Eigenschaften, Methoden und ggf. Ereignisse dieses Objekts angezeigt u.a.
auch die setIconLocation-Methode.
Ich geh jedenfalls immer so vor, wenn ich ein "unbekanntes Objekt" vor mir habe.
Dasselbe gilt übrigends für alle Komponenten und Verweise, die du deinem
Projekt hinzugefügt hast, und auch z.B. für Klassen, die du in deinem Projekt selbst
geschrieben hast.
So und nu' nach dem ellenlangen Geschwafel genehmige ich mir jetzt erstmal
'nen gepfegtes Bier.
I hope that helps.
Prost.
Gru? Michi aus Hannover
1 + 1 = 3 f?r hinreichend gro?e 1 | |
Re: LNK-Verknüpfung mit Icon erstellen | | | Autor: Leberkas | Datum: 11.08.17 21:42 |
| Hallo,
versuche gerade ein Icon aus My.Resources zu verwenden.
Bisher leider ohne Erfolg.
Ist es überhaupt möglich, ein ico aus My.Resources zu verwenden ? | |
Re: LNK-Verknüpfung mit Icon erstellen | | | Autor: Franki | Datum: 12.08.17 03:21 |
| Hallo,
stelle deine Frage doch mal in der vb.net Rubrik, unter VB6 ist das so nicht möglich.
Gruß
Frank | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevZIP40 Pro DLL
Zippen und Unzippen wie die Profis!
Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|