| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1689 人关注过本帖
标题:做了个自动注册OCX小程序。不知道有没有哪位高人给看一下,有没有不到之处
只看楼主 加入收藏
natesc
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2013-9-15
结帖率:37.5%
收藏
已结贴  问题点数:18 回复次数:2 
做了个自动注册OCX小程序。不知道有没有哪位高人给看一下,有没有不到之处
注册OCX文件小程序源码.rar (618.11 KB)

程序代码:
Private Sub Command1_Click()


On Error Resume Next

'注册
 If RegSvr32("c:\windows\system32\Abutton.ocx", False) = False Or RegSvr32("c:\windows\SysWOW64\Abutton.ocx", False) = False Then

 RegSvr32 App.Path & "\Abutton.ocx", False

 End If

End Sub



                  
Public Function RegSvr32(ByVal filename As String, bUnReg As Boolean) As Boolean
              Dim lLib         As Long
              Dim lProcAddress         As Long
              Dim lThreadID         As Long
              Dim lSuccess         As Long
              Dim lExitCode         As Long
              Dim lThread         As Long
              Dim bAns         As Boolean
              Dim sPurpose         As String
              sPurpose = IIf(bUnReg, "DllUnregisterServer", "DllRegisterServer")
              If Dir(filename) = "" Then Exit Function
              lLib = LoadLibraryRegister(filename)
              '载入文件
              If lLib = 0 Then Exit Function
              lProcAddress = GetProcAddressRegister(lLib, sPurpose)
              If lProcAddress = 0 Then
                      '不是ActiveX控件
                          FreeLibraryRegister lLib
                          Exit Function
              Else
                          lThread = CreateThreadForRegister(ByVal 0&, 0&, ByVal lProcAddress, ByVal 0&, 0&, lThread)
                          If lThread Then
                                              lSuccess = (WaitForSingleObject(lThread, 10000) = 0)
                                              If Not lSuccess Then
                                                          Call GetExitCodeThread(lThread, lExitCode)
                                                          Call ExitThread(lExitCode)
                                                          bAns = False
                                                          FreeLibraryRegister lLib
                                                          Exit Function
                                              Else
                                                          bAns = True
                                              End If
                                              CloseHandle lThread
                                              FreeLibraryRegister lLib
                          Else
                                          FreeLibraryRegister lLib
                          End If
              End If
              RegSvr32 = bAns
End Function


[此贴子已经被作者于2017-3-17 15:01编辑过]

搜索更多相关主题的帖子: False 
2017-03-17 14:54
ZHRXJR
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:125
帖 子:1034
专家分:5519
注 册:2016-5-10
收藏
得分:13 
我认为根本不需要这样,只需要写二个批处理文件,就可以解决,而且非常简单。
OCX控件有32位与64位的,拷贝、注册这些OCX控件根据操作系统不同,目录是不同的。
反正我使用批处理文件一次拷贝、注册成功的。

请不要选我!!!
2017-03-18 20:05
natesc
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2013-9-15
收藏
得分:0 
回复 2楼 ZHRXJR
批处理文件什么样,请上传学习
2017-03-19 17:22
快速回复:做了个自动注册OCX小程序。不知道有没有哪位高人给看一下,有没有不到 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025940 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved