作者:佚名 文章来源:onegreen.net 点击数: 更新时间:2008-5-13 0:12:20  |
ringArray(S As String, S2() As String) 'S为我们读取出来的多重字符串 'S2为转换后的字符串数组 Dim count As Integer, pos As Integer, pos2 As Integer, idx As Integer pos = InStr(S, Chr(0))
While pos > 0 count = count + 1 pos = InStr(pos + 1, S, Chr(0)) Wend '取得多重字符串中的字符串个数 count = count - 1
ReDim S2(0 To count - 1) pos = 1 For idx = 0 To count - 1 pos2 = InStr(pos, S, Chr(0)) S2(idx) = Mid(S, pos, pos2 - pos) pos = pos2 + 1 Next End Sub
'在form中添加command按钮和text文本框
'************EnumVal2.frm****************
'以下的Command1_Click事件中我们将列举出'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run下的所有name及其Value. Private Sub Command1_Click() Dim hKey As Long, ret As Long, lenData As Long, typeData As Long Dim Name As String Dim lenName As Long Dim idx As Integer, j As Integer Dim bName(256) As Byte ret = RegOpenKey(HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\Run", hKey) If ret <> 0 Then Exit Sub
ret = 0 idx = 0 While ret = 0 lenName = 256
ret=RegEnumValueAsAny2(hKey,idx,bName(0),lenName,ByVal 0,typeData,ByVal vbNullString, lenData) If ret <> 0 Then RegCloseKey hKey Exit Sub End If '上面的RegEnumValueAsAny2调用得到了第一个Name的长度lenName,不含chr(0) Name = String(lenName + 1, Chr(0)) lenName = Len(Name) Select Case typeData Case REG_SZ, REG_EXPAND_SZ, REG_MULTI_SZ Dim S As String S = String(lenData, Chr(0)) RegEnumValueAsAny hKey, idx, Name, lenName, ByVal 0, typeData, ByVal S, lenData If typeData = REG_SZ Then S = Left(S, InStr(S, Chr(0)) - 1) Text1.SelText=IIf(lenName=0, "(预设值)",Left(Name,InStr(Name,Chr(0))-1)) & "=" & 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 = Left(Name, InStr(Name, Chr(0)) - 1) & " = " & S & vbCrLf ElseIf typeData = REG_MULTI_SZ Then Dim SArr() As String MultiStringToStringArray S, SArr For j = 0 To UBound(SArr) Text1.SelText = Left(Name, InStr(Name, Chr(0)) - 1) & "(" & j & ") = " & SArr(j) & vbCrLf Next End If Case REG_DWORD, REG_DWORD_BIG_ENDIAN Dim L As Long RegEnumValueAsAny hKey, idx, Name, lenName, ByVal 0, typeData, L, lenData Text1.SelText = Left(Name, InStr(Name, Chr(0)) - 1) & " 上一页 [1] [2] [3] 下一页 |