博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
通过代码注册COM、DLL组件
阅读量:4630 次
发布时间:2019-06-09

本文共 1693 字,大约阅读时间需要 5 分钟。

  注册代码如下:

 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

你可能感兴趣的文章
javascript保留字
查看>>
assert
查看>>
openstack安装在虚拟机上重启之后无法启动问题
查看>>
Bulk_Collect_Performance 比较
查看>>
类于对象
查看>>
灵活性是原则性基础上的灵活
查看>>
python 添加进度条
查看>>
恢复Opera11.50地址栏的下拉列表按钮
查看>>
EBS上用过的一些接口表整理信息
查看>>
ldconfig
查看>>
操作系统简介
查看>>
查看Linux系统中某目录的大小
查看>>
Git远程仓库地址变更
查看>>
PAT_B_1027 打印沙漏
查看>>
POJ-1185 炮兵阵地 动态规划+状态压缩
查看>>
NYOJ 366 D的小L
查看>>
PYTHON 写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者...
查看>>
Docker 初识
查看>>
【12.16】VC++调用Word OLE进行自动化生成报表
查看>>
用Maven创建第一个web项目
查看>>