home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 1_2002.ISO / Data / Zips / CODE_UPLOAD176803292001.psc / clsreg.cls < prev    next >
Encoding:
Visual Basic class definition  |  2001-03-24  |  5.8 KB  |  148 lines

  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4.   Persistable = 0  'NotPersistable
  5.   DataBindingBehavior = 0  'vbNone
  6.   DataSourceBehavior  = 0  'vbNone
  7.   MTSTransactionMode  = 0  'NotAnMTSObject
  8. END
  9. Attribute VB_Name = "Registry"
  10. Attribute VB_GlobalNameSpace = True
  11. Attribute VB_Creatable = True
  12. Attribute VB_PredeclaredId = False
  13. Attribute VB_Exposed = True
  14. '----------------------------------------------
  15. 'Visual Basic Runtime Procedures Extension
  16. 'Sushant Pandurangi <sushant@phreaker.net>
  17. '-----------------------------------------------
  18. Option Explicit
  19. '-----------------------------------------------
  20. Public DefaultPath As String
  21. Attribute DefaultPath.VB_VarProcData = ";Data"
  22. Attribute DefaultPath.VB_VarDescription = "Default path for saving settings."
  23. Public ListValues As Collection
  24. Attribute ListValues.VB_VarDescription = "Collection of Registry values of a specified HKEY."
  25. Public ListKeys As Collection
  26. Attribute ListKeys.VB_VarDescription = "Collection of Registry keys of a specified HKEY."
  27. '-----------------------------------------------
  28. Enum EnumRegConstants
  29.  KEY_QUERY_VALUE = &H1
  30.  KEY_SET_VALUE = &H2
  31.  KEY_CREATE_SUB_KEY = &H4
  32.  KEY_ENUMERATE_SUB_KEYS = &H8
  33.  KEY_NOTIFY = &H10
  34.  KEY_CREATE_LINK = &H20
  35.  KEY_ALL_ACCESS = KEY_QUERY_VALUE And KEY_ENUMERATE_SUB_KEYS And KEY_NOTIFY And KEY_CREATE_SUB_KEY And KEY_CREATE_LINK And KEY_SET_VALUE
  36.  REG_OPTION_NON_VOLATILE = 0
  37.  REG_OPTION_VOLATILE = 1
  38.  REG_SZ = 1
  39.  ERROR_SUCCESS = 0&
  40. End Enum
  41. '--------------------------------------------------
  42. Public Enum EnumRegKeys
  43.  HKEY_CLASSES_ROOT = &H80000000
  44.  HKEY_CURRENT_CONFIG = &H80000005
  45.  HKEY_CURRENT_USER = &H80000001
  46.  HKEY_DYN_DATA = &H80000006
  47.  HKEY_LOCAL_MACHINE = &H80000002
  48.  HKEY_PERFORMANCE_DATA = &H80000004
  49.  HKEY_USERS = &H80000003
  50. End Enum
  51. '-----------------------------------------------
  52.  
  53. Public Function CreateKey(hKey As EnumRegKeys, SubKey As String)
  54. Attribute CreateKey.VB_Description = "Create a new Registry Key"
  55.     Dim lngRet As Long
  56.     Dim lngResult As Long
  57.     Dim lngDis As Long
  58.     lngRet = RegCreateKeyEx(hKey, SubKey, 0&, 0&, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, 0&, lngResult, lngDis)
  59.     lngRet = RegCloseKey(lngResult) 'Close key
  60. End Function
  61.  
  62. Public Function DeleteKey(hKey As EnumRegKeys, SubKey As String)
  63. Attribute DeleteKey.VB_Description = "Delete a given key."
  64.     RegDeleteKey hKey, SubKey 'Delete key
  65. End Function
  66.  
  67. Public Function SetValue(hKey As EnumRegKeys, SubKey As String, ValueName As String, sValue As String)
  68. Attribute SetValue.VB_Description = "Set the value to a given setting."
  69.     Dim lngRet As Long
  70.     Dim lngResult As Long
  71.     lngRet = RegOpenKeyEx(hKey, SubKey, 0, KEY_ALL_ACCESS, lngResult)
  72.     If lngRet = ERROR_SUCCESS Then
  73.     RegSetValueEx lngResult, ValueName, 0, REG_SZ, ByVal sValue, Len(sValue)
  74.     RegFlushKey lngResult
  75.     RegCloseKey lngResult
  76.     End If
  77. End Function
  78.  
  79. Public Function GetValue(hKey As EnumRegKeys, SubKey As String, ValueName As String, Optional Default As String = "")
  80. Attribute GetValue.VB_Description = "Get the value of a specified setting."
  81.     Dim lngRet As Long
  82.     Dim lngResult As Long
  83.     Dim sData As String
  84.     lngRet = RegOpenKeyEx(hKey, SubKey, 0, KEY_ALL_ACCESS, lngResult)
  85.     If lngRet = ERROR_SUCCESS Then 'If key exist
  86.         sData = String(128, vbNullChar) 'Fill buffer with null chars
  87.         lngRet = RegQueryValueEx(lngResult, ValueName, 0, REG_SZ, ByVal sData, Len(sData))
  88.         If Not lngRet = ERROR_SUCCESS Then GetValue = Default: Exit Function
  89.         GetValue = Left(sData, InStr(1, sData, vbNullChar) - 1)
  90.         RegCloseKey lngResult
  91.     Else
  92.         GetValue = Default
  93.     End If
  94. End Function
  95.  
  96. Public Function DeleteValue(hKey As EnumRegKeys, SubKey As String, ValueName As String)
  97. Attribute DeleteValue.VB_Description = "Delete the specified value from the registry."
  98.     Dim lngRet As Long
  99.     Dim lngResult As Long
  100.     lngRet = RegOpenKeyEx(hKey, SubKey, 0, KEY_ALL_ACCESS, lngResult)
  101.     RegDeleteValue lngResult, ValueName
  102. End Function
  103.  
  104. Public Function EnumValues(hKey As EnumRegKeys, SubKey As String)
  105. Attribute EnumValues.VB_Description = "Enum all the values of a HKEY and add them to cEnumValues."
  106.     Dim lngRet As Long
  107.     Dim lngResult As Long
  108.     Dim sData As String
  109.     Dim intIndex As Integer
  110.     lngRet = RegOpenKeyEx(hKey, SubKey, 0, KEY_ALL_ACCESS, lngResult)
  111.     If lngRet = ERROR_SUCCESS Then
  112.         Set ListValues = New Collection
  113.         Do
  114.             sData = String(128, vbNullChar)
  115.             lngRet = RegEnumValue(lngResult, intIndex, sData, Len(sData), 0, ByVal 0&, ByVal 0&, ByVal 0&)
  116.             If lngRet <> 0 Then Exit Do 'If there are no more values exit do
  117.             ListValues.Add Left(sData, InStr(1, sData, vbNullChar) - 1) 'Add values
  118.             intIndex = intIndex + 1 'Increase counter by 1
  119.         Loop
  120.         RegCloseKey lngResult 'Close key
  121.     End If
  122. End Function
  123.  
  124. Public Function EnumKeys(hKey As EnumRegKeys, SubKey As String)
  125. Attribute EnumKeys.VB_Description = "Enum all the keys of a HKEY and add them to cEnumKeys."
  126.     Dim lngRet As Long
  127.     Dim lngResult As Long
  128.     Dim sData As String
  129.     Dim intIndex As Integer
  130.     lngRet = RegOpenKeyEx(hKey, SubKey, 0, KEY_ALL_ACCESS, lngResult)
  131.     If lngRet = ERROR_SUCCESS Then 'If key exist
  132.         Set ListKeys = New Collection 'Make new collection
  133.         Do
  134.             sData = String(128, vbNullChar) 'Fill buffer with null chars
  135.             lngRet = RegEnumKey(lngResult, intIndex, sData, Len(sData))
  136.             If lngRet <> 0 Then Exit Do 'If there are no more keys exit do
  137.             ListKeys.Add Left(sData, InStr(1, sData, vbNullChar) - 1)  'Add keys
  138.             intIndex = intIndex + 1 'Increase counter by 1
  139.         Loop
  140.         RegCloseKey lngResult 'Close key
  141.     End If
  142. End Function
  143.  
  144. Sub AboutBox()
  145. frmAbout.Show vbModal
  146. End Sub
  147.  
  148.