Changes

Windows Registry VB6

6,305 bytes added, 13:36, 2 February 2008
/* Setting Registry Info */
The following lines were added (+) and removed (-):
RegQueryValueEx<BR>* hKey identifies a currently opened key* lpValueName contains the name of the value to be queried* lpReserved must be null* lpType will receive key's value type* lpData points to a buffer that receives the value’s data* lpcbData specifies the size, in bytes, of the buffer pointed to by the lpData parameterStep 1:<BR>Create a MODULE called "modREgKeYmAker" (or whatever you like) added to your VB6 ProjectStep 2:<BR>Cut and paste the following code:  <nowiki>Option Explicit</nowiki>  <nowiki></nowiki>  <nowiki>Declare Function RegCloseKey Lib "advapi32.dll" (ByVal HKEY As Long) As Long</nowiki>  <nowiki>Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal HKEY As Long, ByVal lpSubKey As String, phkResult As Long) As Long</nowiki>  <nowiki>Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal HKEY As Long, ByVal lpSubKey As String) As Long</nowiki>  <nowiki>Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal HKEY As Long, ByVal lpValueName As String) As Long</nowiki>  <nowiki>Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal HKEY As Long, ByVal lpSubKey As String, phkResult As Long) As Long</nowiki>  <nowiki>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 Long) As Long</nowiki>  <nowiki>Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal HKEY As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long</nowiki>  <nowiki></nowiki>  <nowiki>Public Const HKEY_CLASSES_ROOT = &H80000000</nowiki>  <nowiki>Public Const HKEY_CURRENT_USER = &H80000001</nowiki>  <nowiki>Public Const HKEY_LOCAL_MACHINE = &H80000002</nowiki>  <nowiki>Public Const HKEY_USERS = &H80000003</nowiki>  <nowiki>Public Const HKEY_PERFORMANCE_DATA = &H80000004</nowiki>  <nowiki>Public Const REG_SZ = 1</nowiki>  <nowiki></nowiki>  <nowiki>Private Const ERROR_SUCCESS As Long = 0</nowiki>  <nowiki></nowiki>  <nowiki>Function RegQueryStringValue(ByVal HKEY As Long, ByVal strValueName As String)</nowiki>  <nowiki>    Dim frmMain As Form</nowiki>  <nowiki>    Dim lResult As Long</nowiki>  <nowiki>    Dim lValueType As Long</nowiki>  <nowiki>    Dim strBuf As String</nowiki>  <nowiki>    Dim lDataBufSize As Long</nowiki>  <nowiki>        On Error GoTo 0</nowiki>  <nowiki>    lResult = RegQueryValueEx(HKEY, strValueName, 0&, lValueType, ByVal 0&, lDataBufSize)</nowiki>  <nowiki>    If lResult = ERROR_SUCCESS Then</nowiki>  <nowiki>        If lValueType = REG_SZ Then</nowiki>  <nowiki>            strBuf = String(lDataBufSize, " ")</nowiki>  <nowiki>            lResult = RegQueryValueEx(HKEY, strValueName, 0&, 0&, ByVal strBuf, lDataBufSize)</nowiki>  <nowiki>            If lResult = ERROR_SUCCESS Then</nowiki>  <nowiki>                RegQueryStringValue = StripTerminator(strBuf)</nowiki>  <nowiki>            End If</nowiki>  <nowiki>        End If</nowiki>  <nowiki>    End If</nowiki>  <nowiki>End Function</nowiki>  <nowiki></nowiki>  <nowiki>Public Function GetSettingEx(HKEY As Long, sPath As String, sValue As String)</nowiki>  <nowiki>    Dim KeyHand&</nowiki>  <nowiki>    Dim datatype&</nowiki>  <nowiki>    Call RegOpenKey(HKEY, sPath, KeyHand&)</nowiki>  <nowiki>    GetSettingEx = RegQueryStringValue(KeyHand&, sValue)</nowiki>  <nowiki>    Call RegCloseKey(KeyHand&)</nowiki>  <nowiki>End Function</nowiki>  <nowiki></nowiki>  <nowiki>Function StripTerminator(ByVal strString As String) As String</nowiki>  <nowiki>    Dim intZeroPos As Integer</nowiki>  <nowiki></nowiki>  <nowiki>    intZeroPos = InStr(strString, Chr$(0))</nowiki>  <nowiki>    If intZeroPos > 0 Then</nowiki>  <nowiki>        StripTerminator = Left$(strString, intZeroPos - 1)</nowiki>  <nowiki>    Else</nowiki>  <nowiki>        StripTerminator = strString</nowiki>  <nowiki>    End If</nowiki>  <nowiki>End Function</nowiki>  <nowiki></nowiki>  <nowiki>Public Sub SaveSettingEx(HKEY As Long, sPath As String, sValue As String, sData As String)</nowiki>  <nowiki>    Dim KeyHand As Long</nowiki>  <nowiki>    Call RegCreateKey(HKEY, sPath, KeyHand)</nowiki>  <nowiki>    Call RegSetValueEx(KeyHand&, sValue, 0, REG_SZ, ByVal sData, Len(sData))</nowiki>  <nowiki>    Call RegCloseKey(KeyHand&)</nowiki>  <nowiki>End Sub</nowiki>Step 3:<BR>Usage.Here are some usage examples:=== Retreiving Registry Info ===  <nowiki>'REGISTRY: load default storybook open path</nowiki>  <nowiki>strRetval = modREgKeYmAker.GetSettingEx(HKEY_CURRENT_USER, "Software\My Software Name\s2album", "DefaultStorybookPath")</nowiki>  <nowiki>If strRetval = "" Then strStorytelling = strMyDocuments & "\EA Games\The Sims 2\Storytelling" Else strStorytelling = strRetval</nowiki>  <nowiki>  </nowiki>  <nowiki>'REGISTRY: SetDefaultToLastUsedPath</nowiki>  <nowiki>strRetval = modREgKeYmAker.GetSettingEx(HKEY_CURRENT_USER, "Software\My Software Name\s2album", "SetDefaultToLastUsedPath")</nowiki>  <nowiki>If strRetval = "True" Then blnSetDefaultToLastUsedPath = True Else blnSetDefaultToLastUsedPath = False</nowiki>  <nowiki></nowiki>  <nowiki>'REGISTRY: LoadImageCacheWarning is for strShowICWOption and blnShowICW</nowiki>  <nowiki>strRetval = modREgKeYmAker.GetSettingEx(HKEY_CURRENT_USER, "Software\My Software Name\s2album", "LoadImageCacheWarning")</nowiki>  <nowiki>If strRetval = "" Then strShowICWOption = "True" Else strShowICWOption = strRetval</nowiki>  <nowiki>If strShowICWOption = "True" Then blnShowICW = True Else blnShowICW = False</nowiki>=== Setting Registry Info ===  <nowiki>modREgKeYmAker.SaveSettingEx HKEY_CURRENT_USER, "Software\My Software Name\s2album", "DefaultStorybookPath", strStorytelling</nowiki>  <nowiki></nowiki>  <nowiki>modREgKeYmAker.SaveSettingEx HKEY_CURRENT_USER, "Software\My Software Name\s2album", "SetDefaultToLastUsedPath", strSetDefaultToLastUsedPath</nowiki>  <nowiki></nowiki>  <nowiki>modREgKeYmAker.SaveSettingEx HKEY_CURRENT_USER, "Software\My Software Name\s2album", "LoadImageCacheWarning", strShowICWOption</nowiki>
Bureaucrat, administrator
16,192
edits