|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
本帖最后由 一江春水1688 于 2023-4-6 17:56 编辑
花了点时间,消化了楼主大礼的代码,增添了几行代码,增加了从注册表提取VersionIndependentProgID值写入表格,代码如下,代码修改处用红色标注
奇怪?发布不了代码?
Private Function CLSIDDefaultValue(strCLSID$)
Dim ret As Long
Dim key As Long
Dim key0 As Long
Dim length As Long
Dim temp$(0 To 2)
ret = RegOpenKey(HKEY_CLASSES_ROOT, "CLSID", key)
ret = RegOpenKey(key, strCLSID, key)
key0 = key
'先取数据区的长度
ret = RegQueryValueEx(key, "", 0, 1, ByVal 0, length)
'准备数据区
If length > 0 Then
Dim buff() As Byte
ReDim buff(length - 1)
'读取数据
ret = RegQueryValueEx(key, "", 0, 1, buff(0), length)
' Dim val As String
'去掉末尾的空字符,VB不需要这个
ReDim Preserve buff(length - 2)
'转化为VB中的字符串
temp(0) = StrConv(buff, vbUnicode)
End If
ret = RegOpenKey(key, "InprocServer32", key)
ret = RegQueryValueEx(key, "", 0, 1, ByVal 0, length)
If length > 0 Then
ReDim buff(length - 1)
'读取数据
ret = RegQueryValueEx(key, "", 0, 1, buff(0), length)
'去掉末尾的空字符,VB不需要这个
ReDim Preserve buff(length - 2)
'转化为VB中的字符串
temp(1) = StrConv(buff, vbUnicode)
End If
ret = RegOpenKey(key0, "VersionIndependentProgID", key)
ret = RegQueryValueEx(key, "", 0, 1, ByVal 0, length)
If length > 0 Then
ReDim buff(length - 1)
'读取数据
ret = RegQueryValueEx(key, "", 0, 1, buff(0), length)
'去掉末尾的空字符,VB不需要这个
ReDim Preserve buff(length - 2)
'转化为VB中的字符串
temp(2) = StrConv(buff, vbUnicode)
End If
CLSIDDefaultValue = temp
RegCloseKey (key)
End Function
|
|