设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1653|回复: 5
打印 上一主题 下一主题

[ActiveX] 有没有真正自动注册并引用Activex控件的代码

[复制链接]

点击这里给我发消息

跳转到指定楼层
1#
发表于 2008-2-28 09:33:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有没有真正自动注册并引用Activex控件的代码?
虽然论坛上有很多这类型的代码,但因为MDE在客户机器还未安装有相应控件时, 自动注册的VBA代码本身运行就会出错
所以实际上要再一次打开程序, 注册才能成功
有没有更好的解决方法, 请高手讨论
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享分享 分享淘帖 订阅订阅
2#
发表于 2008-2-28 10:12:40 | 只看该作者
这里有另一种方法,没真正测试过

'ActtiveX控件都有DllRegisterServer和
'DllUnregisterServer两个输出函数
'点击Command2反注册Threed32.Ocx控件,在VB菜单中选
'Project|components或按Ctrl+T,在控件列表框中可以看
'到已经没有Threed32.Ocx了。再运行程序,点击Command1
'重新注册控件。


Private Declare Function RegComCtl32 Lib "Threed32.OCX" _
        Alias "DllRegisterServer" () As Long
Private Declare Function UnRegComCtl32 Lib "Threed32.OCX" _
        Alias "DllUnregisterServer" () As Long
Private Declare Function FormatMessage Lib "kernel32" _
        Alias "FormatMessageA" (ByVal dwFlags As Long, _
        lpSource As Any, ByVal dwMessageId As Long, _
        ByVal dwLanguageId As Long, ByVal lpBuffer _
        As String, ByVal nSize As Long, Arguments As _
        Long) As Long
Private Declare Function GetLastError Lib "kernel32" () As Long

Const ERROR_SUCCESS = &H0

Private Sub Command1_Click()
    Dim astr As String
   
    '注册Threed32.Ocx
    If RegComCtl32 = ERROR_SUCCESS Then
        MsgBox "注册成功"
    Else
        astr = String$(256, 20)
        FormatMessage FORMAT_MESSAGE_FROM_SYSTEM Or _
            FORMAT_MESSAGE_IGNORE_INSERTS, 0&, GetLastError, _
            0&, astr, Len(astr), ByVal 0
        MsgBox astr
    End If
End Sub

Private Sub Command2_Click()
    Dim astr As String
   
    '反注册Threed32.Ocx
    If UnRegComCtl32 = ERROR_SUCCESS Then
        MsgBox "反注册成功"
    Else
        astr = String$(256, 20)
        FormatMessage FORMAT_MESSAGE_FROM_SYSTEM Or _
            FORMAT_MESSAGE_IGNORE_INSERTS, 0&, GetLastError, _
            0&, astr, Len(astr), ByVal 0
        MsgBox astr
    End If
End Sub
3#
发表于 2008-2-28 10:42:19 | 只看该作者
学习,还没有接触到这一块的内容。

点击这里给我发消息

4#
 楼主| 发表于 2008-2-28 14:22:43 | 只看该作者
谢谢 andymark兄代码.
我说错了, 应该是Access自动引用 的问题,  即自动在引用中添加 控件的引用
因为如果自动引用代码是程序自己运行时, 但此时控件并未正常引用, 所以MDE代码执行时就有错.
5#
发表于 2008-3-31 19:33:47 | 只看该作者
太复杂
6#
发表于 2008-4-1 08:47:13 | 只看该作者
可用一个不含控件的临时的启动窗体运行引用代码。然后再把启动窗体设置为MAIN,这样不会报错。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-2 14:38 , Processed in 0.119422 second(s), 29 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表