| |
VB & Windows APIAPI in einen REG_DWORD 0 oder 1 eintragen | | | Autor: LP | Datum: 20.05.05 14:33 |
| hallo
ich möchte in eine reg_dword den wert 1 übergeben
nun habe ich folgendes programm geschrieben
...
Option Explicit
Public Declare Function RegQueryValueEx Lib "advapi32.dll" Alias _
"RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal _
lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Any) As Long
Public 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
Public Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As _
Long
Public 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
Public Declare Function RegDeleteValue Lib "advapi32.dll" Alias _
"RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
Private Const HKEY_CURRENT_USER = &H80000001
Private Const HKEY_LOCAL_MACHINE = &H80000002
Private Const KEY_QUERY_VALUE = &H1
Private Const KEY_SET_VALUE = &H2
Private Const KEY_CREATE_SUB_KEY = &H4
Private Const KEY_ENUMERATE_SUB_KEYS = &H8
Private Const KEY_NOTIFY = &H10
Private Const KEY_CREATE_LINK = &H20
Private 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
Private Const KEY_READ = KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY
Private Const KEY_WRITE = KEY_SET_VALUE Or KEY_CREATE_SUB_KEY
Private Const KEY_EXECUTE = KEY_READ
Private Const ERROR_SUCCESS = 0&
Private Const REG_NONE = 0
Private Const reg_dword = 4
Private Const root = HKEY_LOCAL_MACHINE
'Private Const root = HKEY_CURRENT_USER
Private Const key As String = _
"SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings"
Public Function SetRun() As Boolean
Dim lResult As Long
Dim lKeyHandle As Long
Dim sField As String
Dim sPath As String
sField = "ProxyEnable"
sPath = 1
lResult = RegOpenKeyEx(root, key, 0, KEY_ALL_ACCESS, lKeyHandle)
If lResult <> ERROR_SUCCESS Then
SetRun = False
Exit Function
End If
lResult = RegSetValueEx_String(lKeyHandle, sField, 0, reg_dword, sPath, Len( _
sPath) + 1)
RegCloseKey lKeyHandle
SetRun = (lResult = ERROR_SUCCESS)
End Function
Public Function DeleteRun() As Boolean
Dim lResult As Long
Dim lKeyHandle As Long
Dim sField As String
Dim sPath As String
sField = "ProxyEnable"
sPath = 0
lResult = RegOpenKeyEx(root, key, 0, KEY_ALL_ACCESS, lKeyHandle)
If lResult <> ERROR_SUCCESS Then
DeleteRun = False
Exit Function
End If
lResult = RegDeleteValue(lKeyHandle, sField)
DeleteRun = (lResult = ERROR_SUCCESS)
RegCloseKey lKeyHandle
End Function
Public Function IsRun() As Boolean
Dim sField As String
Dim Value As Variant
Dim lResult As Long
Dim lKeyHandle As Long
Dim dwType As Long
Dim lBufferSize As Long
Dim sBuffer As String
Dim iPos As Integer
sField = "ProxyEnable"
Value = 1
lResult = RegOpenKeyEx(root, key, 0, KEY_ALL_ACCESS, lKeyHandle)
IsRun = (lResult = ERROR_SUCCESS)
If lResult <> ERROR_SUCCESS Then Exit Function ' Key existiert nicht
lResult = RegQueryValueEx(lKeyHandle, sField, 0&, dwType, ByVal 0&, _
lBufferSize)
IsRun = (lResult = ERROR_SUCCESS)
If lResult <> ERROR_SUCCESS Then Exit Function ' Feld existiert nicht
If dwType = reg_dword Then ' nullterminierter String
sBuffer = Space$(lBufferSize + 1)
lResult = RegQueryValueEx(lKeyHandle, sField, 0&, dwType, ByVal sBuffer, _
lBufferSize)
IsRun = (lResult = ERROR_SUCCESS)
If lResult <> ERROR_SUCCESS Then Exit Function ' Fehler beim auslesen
' des Feldes
'bis zum Nullbyte auslesen
iPos = InStr(sBuffer, Chr$(0))
If iPos Then Value = Left(sBuffer, iPos - 1)
End If
If lResult = ERROR_SUCCESS Then RegCloseKey lKeyHandle
IsRun = True
End Function ...
an der stelle (fett) muss allerdings ein fehler sein, weil der wert den cih übergebe nie 1 ist - hat jemand vielleicht eine idee? | |
Re: API in einen REG_DWORD 0 oder 1 eintragen | | | Autor: LP | Datum: 20.05.05 14:46 |
| nenene
hab mich da vielleicht falsch ausgedrückt
mein wert wird eben nciht 1 ich will 1 bekommen
es kommt aber (ungültiger DWORD Wert)
Binärwert: 31 00
es sollte aber 01 00 00 00 herauskommen | |
keine idee? | | | Autor: LP | Datum: 20.05.05 15:35 |
| keiner ne ideE? | |
Re: API in einen REG_DWORD 0 oder 1 eintragen | | | Autor: LP | Datum: 20.05.05 16:30 |
| wie würde das dann aussehen? | |
Re: API in einen REG_DWORD 0 oder 1 eintragen | | | Autor: brave@heart | Datum: 21.05.05 13:33 |
| Public Declare Function RegSetValueEx_[s]String[/s]DWORD Lib _
"advapi32.dll" Alias _
"RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, _
ByVal Reserved As Long, ByVal dwType As Long, [s]ByVal[/s] lpData As _
Long, ByVal _
cbData As Long) As Long
Public Function SetRun() As Boolean
Dim lResult As Long
Dim lKeyHandle As Long
Dim sField As String
Dim lPath As Long
sField = "ProxyEnable"
lPath = 1
lResult = RegOpenKeyEx(root, key, 0, KEY_ALL_ACCESS, lKeyHandle)
If lResult <> ERROR_SUCCESS Then
SetRun = False
Exit Function
End If
lResult = RegSetValueEx_DWORD(lKeyHandle, sField, 0, reg_dword, lPath, _
4)[color=green]'ein DWORD hat immer 4 bytes
RegCloseKey lKeyHandle
SetRun = (lResult = ERROR_SUCCESS)
End Function mfg
brave@heart
...bis zur unendlichkeit und noch viel weiter... | |
Re: API in einen REG_DWORD 0 oder 1 eintragen | | | Autor: LP | Datum: 30.05.05 08:52 |
| ja so funktioniert es
jedoch muss die isrunfunktion noch korrigiert werden
Public Function IsRun() As Boolean
Dim sField As String
Dim Value As Variant
Dim lResult As Long
Dim lKeyHandle As Long
Dim dwType As Long
Dim lBufferSize As Long
Dim sBuffer As String
Dim iPos As Integer
sField = "ProxyEnable"
Value = 1
lResult = RegOpenKeyEx(root, key, 0, KEY_ALL_ACCESS, lKeyHandle)
IsRun = (lResult = ERROR_SUCCESS)
If lResult <> ERROR_SUCCESS Then Exit Function ' Key existiert nicht
lResult = RegQueryValueEx(lKeyHandle, sField, 0&, dwType, ByVal 0&, _
lBufferSize)
IsRun = (lResult = ERROR_SUCCESS)
If lResult <> ERROR_SUCCESS Then Exit Function ' Feld existiert nicht
If dwType = reg_dword Then ' nullterminierter String
sBuffer = Space$(lBufferSize + 1)
lResult = RegQueryValueEx(lKeyHandle, sField, 0&, dwType, ByVal sBuffer, _
lBufferSize)
IsRun = (lResult = ERROR_SUCCESS)
If lResult <> ERROR_SUCCESS Then Exit Function ' Fehler beim auslesen
' des Feldes
'bis zum Nullbyte auslesen
iPos = InStr(sBuffer, Chr$(0))
If iPos Then Value = Left(sBuffer, iPos - 1)
End If
If lResult = ERROR_SUCCESS Then RegCloseKey lKeyHandle
IsRun = True
End Function | |
Re: API in einen REG_DWORD 0 oder 1 eintragen | | | Autor: LP | Datum: 30.05.05 11:07 |
| Mein Problem hierbei ist, dass wenn der wert 0 in dem dword steht wird nicht false wiedergegeben | |
| 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 |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats sevWizard für VB5/6
Professionelle Assistenten im Handumdrehen
Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Weitere Infos
|