MFC--把dll加载到资源中

来源:互联网 发布:dijkstra算法 poj 编辑:程序博客网 时间:2024/05/17 23:46

一、释放资源dll到根目录下,再加载

1、添加完资源dll后,在代码里从资源中提取dll文件并隐藏,代码如下:

/**@Name:    ReleaseResFile@Brief  释放资源文件@Param:   WORD wResID资源ID@Param:   LPCTSTR szResType资源类型@Param:   LPCTSTR szFileName释放后的文件名称@Return:  成功TRUE,释放FALSE*/BOOL ReleaseResFile(WORD wResID, LPCTSTR szResType, LPCTSTR szFileName){if (szResType == NULL || szFileName == NULL)return FALSE;// 创建文件 DWORD dwShareMode = FILE_SHARE_WRITE | FILE_SHARE_READ | FILE_SHARE_DELETE;HANDLE  hFile = CreateFile(szFileName, GENERIC_WRITE, dwShareMode, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);if (hFile == INVALID_HANDLE_VALUE)return FALSE;HRSRC  hrsc = FindResource(NULL, MAKEINTRESOURCE(wResID), szResType);// 查找资源HGLOBAL hG = LoadResource(NULL, hrsc);// 加载资源DWORD  dwSize = SizeofResource(NULL, hrsc);// 获取资源大小if (dwSize <= 0)return FALSE;// 写入文件 DWORD   dwWrite = 0;WriteFile(hFile, hG, dwSize, &dwWrite, NULL);CloseHandle(hFile);// 隐藏文件CFileStatus  fs;CFile::GetStatus(szFileName, fs);fs.m_attribute = 0x22;CFile::SetStatus(szFileName, fs);return dwWrite > 0;}
2、对话框构造函数里,加载dll

LoadLibrary();

3、在对话框销毁时,释放dll,删除dll(DestroyWindow)

FreeLibrary();DeleteFile();


二、从资源中加载非MFC的dll文件

实例下载地址:http://download.csdn.net/detail/wyansai/9604057


三、从资源或内存中加载各种dll


0 0
原创粉丝点击