请各位大虾一看看!DLL的问题!急急!!!!!!!!!!!

starsrainmzl 2004-12-13 08:14:28
我初学!现遇一问题,DLL的调用有问题出现对象不支持该属性或方法
Private Function WriteRegKey(ByVal KeyRoot As REGRoot, _
ByVal KeyName As String, _
ByVal SubKeyName As String, _
ByVal SubKeyType As REGValueType, _
ByVal SubKeyValue As String _
) As Boolean
Dim rc As Long ' 返回代码
Dim hKey As Long ' 处理一个注册表关键字
Dim hDepth As Long '
Dim lpAttr As SECURITY_ATTRIBUTES ' 注册表安全类型
Dim i As Integer
Dim bytValue(1024) As Byte
Dim intNum As Integer
lpAttr.nLength = 50 ' 设置安全属性为缺省值...
lpAttr.lpSecurityDescriptor = 0
lpAttr.bInheritHandle = True
'------------------------------------------------------------
'- 创建/打开注册表关键字...
'------------------------------------------------------------
rc = RegCreateKeyEx(KeyRoot, _
KeyName, _
0, _
SubKeyType, _
REG_OPTION_NON_VOLATILE, _
KEY_ALL_ACCESS, _
lpAttr, _
hKey, _
hDepth _
) ' 创建/打开//KeyRoot//KeyName

If (rc <> ERROR_SUCCESS) Then GoTo CreateKeyError ' 错误处理...
'------------------------------------------------------------
'- 创建/修改关键字值...
'------------------------------------------------------------
If (SubKeyValue = "") Then SubKeyValue = " " ' 要让RegSetValueEx() 工作需要输入一个空格...
Select Case SubKeyType ' 搜索数据类型...
Case REG_SZ, REG_EXPAND_SZ ' 字符串注册表关键字数据类型
'------------------------------------------------------------------
rc = RegSetValueEx_SZ(hKey, SubKeyName, 0, SubKeyType, ByVal SubKeyValue, LenB(StrConv(SubKeyValue, vbFromUnicode)))
If (rc <> ERROR_SUCCESS) Then GoTo CreateKeyError ' 错误处理
'------------------------------------------------------------------
Case REG_DWORD ' 四字节注册表关键字数据类型
'-------------------------------------------------------------------
rc = RegSetValueEx_DWORD(hKey, SubKeyName, 0, SubKeyType, Val("&h" + SubKeyValue), 4)
If (rc <> ERROR_SUCCESS) Then GoTo CreateKeyError ' 错误处理
'-------------------------------------------------------------------
Case REG_BINARY ' 二进制字符串
'-------------------------------------------------------------------
intNum = 0
For i = 1 To Len(Trim(SubKeyValue)) - 1 Step 3
intNum = intNum + 1
bytValue(intNum - 1) = Val("&h" + Mid(SubKeyValue, i, 2))
Next i

rc = RegSetValueEx_BINARY(hKey, SubKeyName, 0, SubKeyType, bytValue(0), intNum)
If (rc <> ERROR_SUCCESS) Then GoTo CreateKeyError ' 错误处理
'-------------------------------------------------------------------
Case Else
'--------------------------------------------------------------------
GoTo CreateKeyError ' 错误处理
'--------------------------------------------------------------------
End Select

'- 关闭注册表关键字...
'------------------------------------------------------------
rc = RegCloseKey(hKey) ' 关闭关键字
WriteRegKey = True ' 返回成功
Exit Function ' 退出
'---------------------------------------------------------------------------------------------
CreateKeyError:
WriteRegKey = False ' 设置错误返回代码
rc = RegCloseKey(hKey) ' 试图关闭关键字
End Function
上面是DLL中的
下面是调用的
Public objClsReg As Object
Set objClsReg = CreateObject("ModifyRegister.CLSREG")
Private Sub cmdOK_Click(Index As Integer)
Dim retValue As Long
Dim strSubKey As String
Dim Result As Long
Dim Res As Boolean
Dim strServer As String

strServer = Trim(cmbServer.Text)
Res = objClsReg.WriteRegKey(HKEY_LOCAL_MACHINE, strKeyValue, "ServerName", REG_SZ, strServer)
If Res= True Then
MsgBox "Success"
Else
MsgBox "Write Register Failed"
Exit Sub
End If
End Sub
...全文
94 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
starsrainmzl 2004-12-13
  • 打赏
  • 举报
回复
这个啊!我了解一点!VB做是做不成标准的DLL,现在我只要用VB写的用,主要实现 一个动态加载,
要做标准的DLL是不是用c写啊!
各位无论是哪方面 的资料,建义都可以介绍一下,在下谢谢了
fvan 2004-12-13
  • 打赏
  • 举报
回复
用VB无法做标准的Dll,作的DLL只能是ActiveX的,只能VB用
starsrainmzl 2004-12-13
  • 打赏
  • 举报
回复
谢谢!
是这个问题,我想请教 一下!你有没有一些做DLL的资料啊!推荐一下!我刚开始学做DLL,以前也没有学过VB,现在要用,有点措手不及,在这我谢谢了!
starsrainmzl 2004-12-13
  • 打赏
  • 举报
回复
好我试试
supergreenbean 2004-12-13
  • 打赏
  • 举报
回复
Private 改成 Public

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧