MFC中注册DLL函数
来源:互联网 发布:网络问卷调查网站 编辑:程序博客网 时间:2024/05/22 04:40
VC++注册DLL
1.注册dll
- #include <Shlwapi.h>
- #pragma comment(lib, "Shlwapi.lib")
- //RegistryDll用来注册DLL,参数是DLL的全路径,返回值代表注册成功或者失败(TRUE为成功)。
- BOOL RegistryDll(CString& szDllPath)
- {
- if (!(PathFileExists(szDllPath) && (!PathIsDirectory(szDllPath))))
- {
- wprintf(L"注册%s 文件的时候,发生错误:该文件不存在!\r\n", szDllPath);
- //这里的错误信息有必要的话,可以换成OutputDebugString的方式打印出来
- return FALSE;
- }
- LRESULT (CALLBACK* lpDllEntryPoint)();
- HINSTANCE hLib = LoadLibrary(szDllPath);
- if (hLib < (HINSTANCE)HINSTANCE_ERROR)
- return FALSE;
- (FARPROC&)lpDllEntryPoint = GetProcAddress(hLib, "DllRegisterServer");
- BOOL bRet = FALSE;
- if (lpDllEntryPoint != NULL)
- {
- HRESULT hr = (*lpDllEntryPoint)();
- bRet = SUCCEEDED(hr);
- if (FAILED(hr))
- {
- CString szErrMsg;
- if (GetErrMessage(hr, szErrMsg))
- {
- wprintf(L"注册%s 文件的时候,发生错误:%s\r\n", szDllPath, szErrMsg);
- }
- else
- {
- wprintf(L"注册%s 文件的时候,发生错误,但是无法获取错误信息,错误代码为:x%08x\r\n", szDllPath, hr);
- }
- }
- }
- FreeLibrary(hLib);
- return bRet;
- }
2.反注册dll
- //UnRegistryDll用来反注册DLL,参数是DLL的全路径,返回值代表注册成功或者失败(TRUE为成功)。
- BOOL UnRegistryDll(CString& szDllPath)
- {
- if (!(PathFileExists(szDllPath) && (!PathIsDirectory(szDllPath))))
- {
- wprintf(L"反注册%s 文件的时候,发生错误:该文件不存在!\r\n", szDllPath);
- return FALSE;
- }
- LRESULT (CALLBACK* lpDllEntryPoint)();
- HINSTANCE hLib = LoadLibrary(szDllPath);
- if (hLib < (HINSTANCE)HINSTANCE_ERROR)
- return FALSE;
- (FARPROC&)lpDllEntryPoint = GetProcAddress(hLib, "DllUnregisterServer");
- BOOL bRet = FALSE;
- if (lpDllEntryPoint != NULL)
- {
- HRESULT hr = (*lpDllEntryPoint)();
- bRet = SUCCEEDED(hr);
- if (FAILED(hr))
- {
- CString szErrMsg;
- if (GetErrMessage(hr, szErrMsg))
- {
- wprintf(L"反注册%s 文件的时候,发生错误:%s\r\n", szDllPath, szErrMsg);
- }
- else
- {
- wprintf(L"反注册%s 文件的时候,发生错误,但是无法获取错误信息,错误代码为:x%08x\r\n", szDllPath, hr);
- }
- }
- }
- FreeLibrary(hLib);
- return bRet;
- }
- //UnRegistryDll用来反注册DLL,参数是DLL的全路径,返回值代表注册成功或者失败(TRUE为成功)。
- BOOL UnRegistryDll(CString& szDllPath)
- {
- if (!(PathFileExists(szDllPath) && (!PathIsDirectory(szDllPath))))
- {
- wprintf(L"反注册%s 文件的时候,发生错误:该文件不存在!\r\n", szDllPath);
- return FALSE;
- }
- LRESULT (CALLBACK* lpDllEntryPoint)();
- HINSTANCE hLib = LoadLibrary(szDllPath);
- if (hLib < (HINSTANCE)HINSTANCE_ERROR)
- return FALSE;
- (FARPROC&)lpDllEntryPoint = GetProcAddress(hLib, "DllUnregisterServer");
- BOOL bRet = FALSE;
- if (lpDllEntryPoint != NULL)
- {
- HRESULT hr = (*lpDllEntryPoint)();
- bRet = SUCCEEDED(hr);
- if (FAILED(hr))
- {
- CString szErrMsg;
- if (GetErrMessage(hr, szErrMsg))
- {
- wprintf(L"反注册%s 文件的时候,发生错误:%s\r\n", szDllPath, szErrMsg);
- }
- else
- {
- wprintf(L"反注册%s 文件的时候,发生错误,但是无法获取错误信息,错误代码为:x%08x\r\n", szDllPath, hr);
- }
- }
- }
- FreeLibrary(hLib);
- return bRet;
- }
0 0
- MFC中注册DLL函数
- MFC DLL中导出函数模板
- 程序中注册dll
- 程序中注册dll
- 程序中注册dll
- MFC的DLL中调用函数指针与主程序交互
- WPF中使用MFC动态链接库(dll)函数
- 使用API函数注册Dll
- MFC中DLL调用
- MFC中调用DLL
- VC中制作DLL 动态链接库 函数回调MFC dll
- mfc 中控件的注册
- MFC中注册全局热键
- DLL中创建MFC窗体
- 在MFC中调用DLL
- MFC中DLL入门详解
- MFC DLL中加载图标
- Win32 DLL中使用MFC
- word2010总是出现配置进度框、word2003关闭时出现:您正试图运行的函数包含有宏
- MFC 读取配置文件ini
- 黑马程序员--Java基础--认识JAVA
- .NET 时间字符串转换
- 信号章节相关概念
- MFC中注册DLL函数
- POJ 1269 Intersecting Lines(判断两直线关系)
- 非结构体线段树版 ZJU 1610 Count the Colors (线段树区间更新)
- hdu 2087 剪花布条
- Android之ListView中的分隔线
- 嵌入式SQL
- 双端LIS问题:从一列数中筛除尽可能少的数使得从左往右看,这些数是从小到大再从大到小的。
- Linux操作系统中的空闲内存查询(转载)
- 并查集(Union-Find)算法介绍