"Viele Wege führen nach Rom." Dieses Sprichwort trifft auf unseren heutigen Tipp besonders zu. Oftmals wird gefragt: "Wie kann ich erreichen, daß meine Anwendung automatisch beim Windows-Start gestartet wird?" Hierfür gibt es verschiedene Wege und Möglichkeiten. Nachfolgend möchten wir Ihnen vier verschiedene Varianten zeigen - alle haben Ihre Vor- und Nachteile. Suchen Sie sich am besten die für Sie am besten geeignete Möglichkeit aus. 1. Eintragung in die win.ini - Datei [windows] load=pfad+datei open=pfad+dateiDas Eintragen dieses Abschnittes erfolgt am einfachsten mit der API-Fuktion WriteProfileSection. Private Declare Function WriteProfileSection Lib "kernel32" _ Alias "WriteProfileSectionA" ( _ ByVal lpAppName As String, _ ByVal lpString As String) As Long ' Programm in win.ini eintragen Public Sub SaveAppToWin_ini(ByVal AppFile As String) WriteProfileSection "windows", "load=" & AppFile & _ vbCrLf & "open=" & AppFile End Sub Der Aufruf erfolgt dann so: SaveAppToWin_ini App.Path & "\" & App.EXEName & ".exe"Der Nachteil an dieser sehr kurzen Variante ist, daß ein evtl. in der win.ini bereits eingetragenes Programm überschrieben wird, da immer nur ein einziger Eintrag erfolgen kann. 2. Eintragung in die Registry 3. Verknüpfung im AutoStart-Ordner Private Declare Function OSfCreateShellLink Lib "STKIT432.DLL" _ Alias "fCreateShellLink" ( _ ByVal lpstrFolderName As String, _ ByVal lpstrLinkName As String, _ ByVal lpstrLinkPath As String, _ ByVal lpstrLinkArguments As String) As Long Private Declare Function OSfRemoveShellLink Lib "STKIT432.DLL" _ Alias "fRemoveShellLink" ( _ ByVal lpstrFolderName As String, _ ByVal lpstrLinkName As String) As Long Private Declare Function OSfCreateShellGroup Lib "STKIT432.DLL" _ Alias "fCreateShellFolder" ( _ ByVal lpstrDirName As String) As Long ' Verknüpfung in Ordner "AutoStart" erstellen Public Sub SaveLinkToAutoStart(ByVal AppFile As String, _ ByVal AppTitel As String, ByVal AppParam As String) Dim lResult As Long On Local Error Resume Next OSfCreateShellLink "Autostart", AppTitel, AppFile, _ AppParam If Err <> 0 Then ' Autostart-Ordner existiert nicht ' also zunächst erstellen... OSfCreateShellGroup "Autostart" ' ... und erneut versuchen OSfCreateShellLink "Autostart", AppTitel, AppFile, _ AppParam End If End Sub Der Aufruf erfolgt dann so: Dim AppFile As String Dim AppTitel As String Dim AppParam As String AppFile = App.Path & "\" & App.EXEName & ".exe" AppTitel = "Meine Anwendung" ' optional Parameterübergabe für den Aufruf AppParam = "" SaveLinkToAutoStart AppFile, AppTitel, AppParam Wenn Sie nicht im Besitz von VB4 sind, können Sie sich hier die STKIT432.DLL downloaden: 4. Verwenden der SHELLLNK.TLB ' zunächst die benötigten API-Deklarationen Private Declare Function SHGetPathFromIDList Lib "shell32.dll" _ Alias "SHGetPathFromIDListA" ( _ ByVal pidl As Long, _ ByVal pszPath As String) As Long Private Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" ( _ ByVal hwndOwner As Long, _ ByVal nFolder As Long, _ pidl As ITEMIDLIST) As Long Private Const CSIDL_STARTUP = &H7 Private Type SHITEMID cb As Long abID As Byte End Type Private Type ITEMIDLIST mkid As SHITEMID End Type Private Function GetSpecialfolder(CSIDL As Long) As String Dim r As Long Dim IDL As ITEMIDLIST Dim Path As String If SHGetSpecialFolderLocation(100, CSIDL, IDL) = 0 Then Path = Space$(512) r = SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal Path) GetSpecialfolder = Left$(Path, InStr(Path, Chr$(0)) - 1) End If End Function ' Verzeichnisnamen für AutoStart-Ordner ermitteln Public Function GetAutoStartFolder() As String Dim sPath As String sPath = GetSpecialfolder(CSIDL_STARTUP) If Right$(sPath, 1) <> "\" Then sPath = sPath & "\" GetAutoStartFolder = sPath End Function Mit diesen Informationen lässt sich nun die Verknüpfung im AutoStart-Ordner mit Hilfe der SHELLLNK.TLB folgendermaßen realisieren: Public Function CreateLink(Datei As String, _ LinkName As String) 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 ' Verknüpfung Ihrer Anwendung im ' AutoStart-Ordner speichern CreateLink App.Path & "\" & App.EXEName, _ GetAutoStartFolder() & "MeineAnwendung" & ".lnk" Wenn Sie diese Varianten verwenden (oder ausprobieren möchten) müssen Sie Ihrem Projekt den entsprechenden Verweis hinzufügen (Menü Projek - Verweise). Für alle, die die SHELLLNK.TLB nicht finden oder nicht haben, hier der Download-Link: Dieser Tipp wurde bereits 72.674 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
Neu! sevPopUp 2.0 Dynamische Kontextmenüs! Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... Tipp des Monats März 2024 Dieter Otter UTF-8 Konvertierung von Dateien und Strings VB6 selbst verfügt über keine Funktionen zur UTF-8 Konvertierung von Daten. Mit Hilfe des ADODB.Stream-Objekts lassen sich diese fehlenden Funktionen aber schnell nachrüsten. 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 |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |