000
24.04.2004, 12:58 Uhr
Audron-AT-www
http://www.sXene.de Audron@sxene.de (Operator)
|
Autostart für dein Programm! Zweiter Teil! Undzwar ganz mit der Registry:
Der nachfolgende Tipp zeigt, wie man eine bestimmte Anwendung direkt in die Windows-Registrier-Datenbank einträgt, so daß diese beim Windows-Start automatisch geladen wird. Über eine entsprechende Prozedur kann der Eintrag auch wieder aus der Registrier-Datenbank gelöscht werden.
Visual Basic: |
'zunächst die benötigten API-Deklarationen Private Declare Function RegOpenKeyEx Lib "advapi32.dll" _ Alias "RegOpenKeyExA" (ByVal hKey As Long, _ ByVal lpSubKey As String, ByVal ulOptions As Long, _ ByVal samDesired As Long, phkResult As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" _ (ByVal hKey As Long) As Long
Private Declare Function RegSetValueEx_String Lib _ "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey _ As Long, ByVal lpValueName As String, ByVal Reserved _ As Long, ByVal dwType As Long, ByVal lpData As String, _ ByVal cbData As Long) As Long
Private Declare Function RegDeleteValue Lib _ "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As _ Long, ByVal lpValueName As String) As Long
Public Const HKEY_CURRENT_USER = &H80000001 Public Const HKEY_LOCAL_MACHINE = &H80000002
Const KEY_QUERY_VALUE = &H1 Const KEY_SET_VALUE = &H2 Const KEY_CREATE_SUB_KEY = &H4 Const KEY_ENUMERATE_SUB_KEYS = &H8 Const KEY_NOTIFY = &H10 Const KEY_CREATE_LINK = &H20 Const KEY_ALL_ACCESS = KEY_QUERY_VALUE Or KEY_SET_VALUE _ Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or _ KEY_NOTIFY Or KEY_CREATE_LINK
Const ERROR_SUCCESS = 0&
Const REG_NONE = 0 Const REG_SZ = 1
'Anwendung in Registry eintragen ' 'sDescr: Beschreibung/Bezeichnung 'sPath : Pfad inkl. Dateiname der Anwendung '=========================================== Public Function SetAutoRun(sDescr As String, _ sPath As String) As Boolean
Dim lResult As Long Dim KeyHandle As Long Dim Key As String
Const root = HKEY_CURRENT_USER Key = "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
lResult = RegOpenKeyEx(root, Key, 0, KEY_ALL_ACCESS, _ KeyHandle) If lResult <> ERROR_SUCCESS Then SetAutoRun = False Exit Function End If
'+1 für die Null am Ende lResult = RegSetValueEx_String(KeyHandle, sDescr, 0, _ REG_SZ, sPath, Len(sPath) + 1)
RegCloseKey KeyHandle SetAutoRun = (lResult = ERROR_SUCCESS) End Function
'aus Registry entfernen ' 'sDescr: Beschreibung/Bezeichnung '================================= Function RemoveAutoRun(sDescr As String) As Boolean Dim lResult As Long Dim KeyHandle As Long Dim Key As String Const root = HKEY_CURRENT_USER Key = "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
lResult = RegOpenKeyEx(root, Key, 0, _ KEY_ALL_ACCESS, KeyHandle) If lResult <> ERROR_SUCCESS Then RemoveAutoRun = False Exit Function End If lResult = RegDeleteValue(KeyHandle, sDescr) RemoveAutoRun = (lResult = ERROR_SUCCESS) RegCloseKey KeyHandle End Function
|
Beispiel: Beim Starten von Windows soll automatisch Notepad (Texteditor) gestartet werden.
Visual Basic: |
If SetAutoRun("Notepad", "c:\windows\notepad.exe") Then MsgBox "Eintrag war erfolgreich." Else MsgBox "Eintrag war nicht erfolgreich." End If
'Eintrag wieder aus Registry löschen RemoveAutoRun "Notepad"
|
_____________________________________________ Sooooo.... Ich hoffe ich konnte euch mit dem ganzen Tipps im Thema Autostart ein wenig weiterhelfen! *tiiiiiief durch atme* Ich danke allen die meine Tipps bis HIER gelesen haben ;)
Danke!! -- Mit freundlichen Grüßen Audron, audron@sxene.de
Dieser Post wurde am 26.09.2005 um 16:57 Uhr von Uwe editiert. |