home *** CD-ROM | disk | FTP | other *** search
/ Using Visual Basic 5 (Platinum Edition) / vb5.iso / Code / ch45 / EXAM3A.FRM (.txt) < prev    next >
Encoding:
Visual Basic Form  |  1997-08-27  |  6.2 KB  |  210 lines

  1. VERSION 5.00
  2. Object = "{6B7E6392-850A-101B-AFC0-4210102A8DA7}#1.2#0"; "COMCTL32.OCX"
  3. Begin VB.Form exam3 
  4.    Caption         =   "Registry Explorer"
  5.    ClientHeight    =   3930
  6.    ClientLeft      =   2010
  7.    ClientTop       =   1545
  8.    ClientWidth     =   9045
  9.    LinkTopic       =   "Form1"
  10.    ScaleHeight     =   3930
  11.    ScaleWidth      =   9045
  12.    Begin VB.ListBox lstValues 
  13.       Height          =   1620
  14.       Left            =   5160
  15.       TabIndex        =   3
  16.       Top             =   480
  17.       Width           =   3915
  18.    End
  19.    Begin ComctlLib.TreeView treReg 
  20.       Height          =   3735
  21.       Left            =   360
  22.       TabIndex        =   1
  23.       Top             =   0
  24.       Width           =   4755
  25.       _ExtentX        =   8387
  26.       _ExtentY        =   6588
  27.       _Version        =   327682
  28.       LineStyle       =   1
  29.       Style           =   7
  30.       Appearance      =   1
  31.    End
  32.    Begin VB.CommandButton cmdExit 
  33.       Caption         =   "E&xit"
  34.       Height          =   315
  35.       Left            =   8100
  36.       TabIndex        =   0
  37.       Top             =   3240
  38.       Width           =   915
  39.    End
  40.    Begin VB.Label lblValue 
  41.       Caption         =   "Values"
  42.       Height          =   315
  43.       Left            =   5340
  44.       TabIndex        =   2
  45.       Top             =   60
  46.       Width           =   1995
  47.    End
  48. Attribute VB_Name = "exam3"
  49. Attribute VB_GlobalNameSpace = False
  50. Attribute VB_Creatable = False
  51. Attribute VB_PredeclaredId = True
  52. Attribute VB_Exposed = False
  53. Option Explicit
  54. Private Sub Command1_Click()
  55. End Sub
  56. Private Sub cmdExit_Click()
  57. Unload Me
  58. End Sub
  59. Private Sub Form_Load()
  60. Dim ntest As Long
  61. Dim cname As String
  62. Dim lname As Long
  63. Dim x As Integer
  64. Dim nodX As Node
  65. Screen.MousePointer = vbHourglass
  66. cname = Space$(4096)
  67. lname = 4096
  68. Set nodX = treReg.Nodes.Add(, , "HKEY_CLASSES_ROOT", "HKEY_CLASSES_ROOT")
  69. Set nodX = treReg.Nodes.Add(, , "HKEY_CURRENT_USER", "HKEY_CURRENT_USER")
  70. Set nodX = treReg.Nodes.Add(, , "HKEY_LOCAL_MACHINE", "HKEY_LOCAL_MACHINE")
  71. Set nodX = treReg.Nodes.Add(, , "HKEY_USERS", "HKEY_USERS")
  72. Set nodX = treReg.Nodes.Add(, , "HKEY_CURRENT_CONFIG", "HKEY_CURRENT_CONFIG")
  73. Set nodX = treReg.Nodes.Add(, , "HKEY_DYN_DATA", "HKEY_DYN_DATA")
  74. x = 0
  75. Do While ntest = 0
  76.     ' get all of the Sub Keys for HKEY_CLASSES_ROOT
  77.     ntest = RegEnumKey(HKEY_CLASSES_ROOT, x, cname, lname)
  78.     If ntest = 0 Then
  79.         
  80.         Set nodX = treReg.Nodes.Add("HKEY_CLASSES_ROOT", tvwChild, "A" & CStr(x), cname)
  81.         x = x + 1
  82.         
  83.     End If
  84. x = 0
  85. ntest = 0
  86. Do While ntest = 0
  87.     ' get all of the Sub Keys for HKEY_CURRENT_USER
  88.     ntest = RegEnumKey(HKEY_CURRENT_USER, x, cname, lname)
  89.     If ntest = 0 Then
  90.         
  91.         Set nodX = treReg.Nodes.Add("HKEY_CURRENT_USER", tvwChild, "B" & CStr(x), cname)
  92.         x = x + 1
  93.     End If
  94. x = 0
  95. ntest = 0
  96. Do While ntest = 0
  97.     ' get all of the Sub Keys for HKEY_LOCAL_MACHINE
  98.     ntest = RegEnumKey(HKEY_LOCAL_MACHINE, x, cname, lname)
  99.     If ntest = 0 Then
  100.         Set nodX = treReg.Nodes.Add("HKEY_LOCAL_MACHINE", tvwChild, "C" & CStr(x), cname)
  101.         x = x + 1
  102.     End If
  103. x = 0
  104. ntest = 0
  105. Do While ntest = 0
  106.     ' get all of the Sub Keys for HKEY_USERS
  107.     ntest = RegEnumKey(HKEY_USERS, x, cname, lname)
  108.     If ntest = 0 Then
  109.         
  110.         Set nodX = treReg.Nodes.Add("HKEY_USERS", tvwChild, "D" & CStr(x), cname)
  111.         x = x + 1
  112.     End If
  113. x = 0
  114. ntest = 0
  115. Do While ntest = 0
  116.     ' get all of the Sub Keys for HKEY_CURRENT_CONFIG
  117.     ntest = RegEnumKey(HKEY_CURRENT_CONFIG, x, cname, lname)
  118.     If ntest = 0 Then
  119.         
  120.         Set nodX = treReg.Nodes.Add("HKEY_CURRENT_CONFIG", tvwChild, "E" & CStr(x), cname)
  121.         x = x + 1
  122.     End If
  123. x = 0
  124. ntest = 0
  125. Do While ntest = 0
  126.     ' get all of the Sub Keys for HKEY_DYN_DATA
  127.     ntest = RegEnumKey(HKEY_DYN_DATA, x, cname, lname)
  128.     If ntest = 0 Then
  129.         
  130.         Set nodX = treReg.Nodes.Add("HKEY_DYN_DATA", tvwChild, "F" & CStr(x), cname)
  131.         x = x + 1
  132.     End If
  133. Screen.MousePointer = vbDefault
  134. End Sub
  135. Private Sub Form_Unload(Cancel As Integer)
  136. Set exam3 = Nothing
  137. End Sub
  138. Private Sub treReg_NodeClick(ByVal Node As ComctlLib.Node)
  139. Dim nodX As Node
  140. Dim ntest As Integer
  141. Dim lret As Long
  142. Dim hKey As Long
  143. Dim x As Integer
  144. Dim cname As String
  145. Dim cvname As String
  146. Dim ctype As String
  147. Dim lpcvalue As Long
  148. Dim lname As Long
  149. Dim lhandle As Long
  150. Dim ntype As Long
  151. Dim cdata As Byte
  152. Dim ldata As Long
  153. cname = Space$(4096)
  154. cvname = Space$(25)
  155. lname = 4096
  156. 'cdata = Space$(4096)
  157. ldata = Len(cdata)
  158. If Node.Children > 0 Then
  159.     Exit Sub
  160. Select Case Mid$(Node.FullPath, 1, InStr(1, Node.FullPath, "\") - 1)
  161. Case "HKEY_CLASSES_ROOT"
  162.     hKey = HKEY_CLASSES_ROOT
  163. Case "HKEY_CURRENT_CONFIG"
  164.     hKey = HKEY_CURRENT_CONFIG
  165. Case "HKEY_CURRENT_USER"
  166.     hKey = HKEY_CURRENT_USER
  167. Case "HKEY_DYN_DATA"
  168.     hKey = HKEY_DYN_DATA
  169. Case "HKEY_LOCAL_MACHINE"
  170.     hKey = HKEY_LOCAL_MACHINE
  171. Case "HKEY_PERFORMANCE_DATA"
  172.     hKey = HKEY_PERFORMANCE_DATA
  173. Case "HKEY_USERS"
  174.     hKey = HKEY_USERS
  175. End Select
  176. lret = RegOpenKeyEx(hKey, Mid$(Node.FullPath, InStr(1, Node.FullPath, "\") + 1, Len(Node.FullPath) - InStr(1, Node.FullPath, "\") + 1), 0, KEY_QUERY_VALUE, lhandle)
  177. If lret <> 0 Then
  178.     Exit Sub
  179. End If
  180. ntest = 0
  181. x = 0
  182. Do While ntest <> ERROR_NO_MORE_ITEMS
  183.     ntest = RegEnumKey(lhandle, x, cname, lname)
  184.     If ntest = 0 Then
  185.         Set nodX = treReg.Nodes.Add(Node.Index, tvwChild, "A" & CStr(x) & CStr(Timer), cname)
  186.         x = x + 1
  187.     Else
  188.         ntest = 0
  189.         x = 0
  190.         lstValues.Clear
  191.         Do While ntest <> ERROR_NO_MORE_ITEMS
  192.            
  193.             
  194.             ntest = RegEnumValue(lhandle, x, cvname, Len(cvname), 0, ntype, cdata, ldata)
  195.             If ntest = 0 Then
  196.             
  197.                lstValues.AddItem Trim$(cvname)
  198.                 x = x + 1
  199.             
  200.             End If
  201.         
  202.         Loop
  203.     End If
  204. End If
  205. lret = RegCloseKey(lhandle)
  206. If Node.Children <> 0 Then
  207.     Node.Expanded = True
  208. End If
  209. End Sub
  210.