www.pudn.com > vbandreg1.zip > QValueEx.frm


VERSION 5.00 
Begin VB.Form Form1  
   BorderStyle     =   3  'Fixed Dialog 
   Caption         =   "RegQueryValueEx 范例程序" 
   ClientHeight    =   3465 
   ClientLeft      =   3540 
   ClientTop       =   2970 
   ClientWidth     =   5055 
   LinkTopic       =   "Form1" 
   MaxButton       =   0   'False 
   MinButton       =   0   'False 
   ScaleHeight     =   3465 
   ScaleWidth      =   5055 
   ShowInTaskbar   =   0   'False 
   Begin VB.CommandButton Command2  
      Caption         =   "显示资料" 
      Height          =   495 
      Left            =   3000 
      TabIndex        =   2 
      Top             =   2880 
      Width           =   1935 
   End 
   Begin VB.TextBox Text1  
      Height          =   2535 
      Left            =   120 
      MultiLine       =   -1  'True 
      ScrollBars      =   3  'Both 
      TabIndex        =   1 
      Top             =   120 
      Width           =   4815 
   End 
   Begin VB.CommandButton Command1  
      Caption         =   "调入VBandREG.reg 的资料" 
      Height          =   495 
      Left            =   120 
      TabIndex        =   0 
      Top             =   2880 
      Width           =   1935 
   End 
End 
Attribute VB_Name = "Form1" 
Attribute VB_GlobalNameSpace = False 
Attribute VB_Creatable = False 
Attribute VB_PredeclaredId = True 
Attribute VB_Exposed = False 
Option Explicit 
 
Private Sub Command1_Click() 
    Shell "RegEdit /S " & App.Path & "\VBandREG.reg", vbNormalFocus 
End Sub 
 
Private Sub Command2_Click() 
    Dim hKey As Long, ret As Long, lenData As Long, typeData As Long 
    Dim Name As String, NameList(0 To 5) As String 
    Dim i As Integer, j As Integer 
    Text1.Text = "" 
    ret = RegOpenKey(HKEY_CURRENT_USER, "Software\VBandREG", hKey) 
    If ret <> 0 Then Exit Sub 
     
    NameList(0) = "" 
    NameList(1) = "Str1": NameList(2) = "Str2": NameList(3) = "Str3" 
    NameList(4) = "LongData": NameList(5) = "BinaryData" 
     
    For i = 0 To UBound(NameList) 
        Name = NameList(i) 
        ret = RegQueryValueEx(hKey, Name, 0, typeData, ByVal vbNullString, lenData) 
        If ret <> 0 Then 
            RegCloseKey hKey 
            Exit Sub 
        End If 
     
        Select Case typeData 
                 
            Case REG_SZ, REG_EXPAND_SZ, REG_MULTI_SZ 
                Dim S As String 
                     
                S = String(lenData, Chr(0)) 
                RegQueryValueEx hKey, Name, 0, typeData, ByVal S, lenData 
             
                If typeData = REG_SZ Then 
                    S = Left(S, InStr(S, Chr(0)) - 1) 
                    Text1.SelText = IIf(Name = "", "(预设值)", Name) & " = " & S & vbCrLf 
                ElseIf typeData = REG_EXPAND_SZ Then 
                    Dim S2 As String 
                     
                    S2 = String(Len(S) + 256, Chr(0)) 
                    ExpandEnvironmentStrings S, S2, Len(S2) 
                    S = Left(S2, InStr(S2, Chr(0)) - 1) 
                    Text1.SelText = Name & " = " & S & vbCrLf 
                ElseIf typeData = REG_MULTI_SZ Then 
                    Dim SArr() As String 
                     
                    MultiStringToStringArray S, SArr 
                    For j = 0 To UBound(SArr) 
                        Text1.SelText = Name & "(" & j & ") = " & SArr(j) & vbCrLf 
                    Next 
                End If 
                 
            Case REG_DWORD, REG_DWORD_BIG_ENDIAN 
                Dim L As Long 
                     
                RegQueryValueEx hKey, Name, 0, typeData, L, lenData 
                Text1.SelText = Name & " = " & L & vbCrLf 
                 
            Case REG_BINARY 
                ReDim bArr(0 To lenData - 1) As Byte 
                 
                RegQueryValueEx hKey, Name, 0, typeData, bArr(0), lenData 
                Text1.SelText = Name & " = " 
                For j = 0 To UBound(bArr) 
                    Text1.SelText = Hex(bArr(j)) & " " 
                Next 
                Text1.SelText = vbCrLf 
        End Select 
    Next 
    RegCloseKey hKey 
End Sub