通过代码注册COM、DLL组件

  注册代码如下:

 C++ Code 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 
//
//=================================================//
//If returns    Zero, DLL successfully registered...
//        -2 means DLL can not be loaded..
//        -3 means DLL Entry point can not be found..
//        -4 means Could not register the file... 
//                 DLL Registration failed..
//================================================//
int  RegisterComponent( char  *absPath)
{
    HINSTANCE hDLL = LoadLibrary(absPath);
    
if (hDLL ==  NULL )
    {
        
//-2 means DLL can not be loaded..
         return  - 2 ;            
    }

    
typedef  HRESULT (CALLBACK *HCRET)( void );
    HCRET lpfnDllRegisterServer;
    lpfnDllRegisterServer = 
         (HCRET)GetProcAddress(hDLL, 
"DllRegisterServer" );

    
if (lpfnDllRegisterServer ==  NULL )
    {
        
//-3 means DLL Entry point can not be found..
         return  - 3 ;            
    }

    
//Call the function by function pointer..
     if (FAILED((*lpfnDllRegisterServer)()))            
    {
        
//-4 means Could not register the file... 
         //DLL Registration failed..
         return  - 4 ;            
    }
    
return   0 ;
}
//

  测试代码:

 C++ Code 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
//
int  nVal = RegisterComponent( "C:\\KvDateTime.OCX" );
if (nVal ==  0 )
{
    AfxMessageBox(
"Component Successfully Registered..." );
}
else   if (nVal == - 2 )
{
    AfxMessageBox(
"DLL can not be loaded..\r\nReason could "
       
"be path is incorrect\r\nor.. Component is corrupt" );
}
else   if (nVal == - 3 )
{
    AfxMessageBox(
"DLL Entrypoint for function "
                 
"DLLRegisterServer could not be found.." );
}
else   if (nVal == - 4 )
{
    AfxMessageBox(
"DLL Registration Failed.." );
}
else
{
    AfxMessageBox(
"Unknown error in registering the file.." );
}
//

转载于:https://www.cnblogs.com/MakeView660/p/8446579.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值