MFC--把dll加载到资源中

    xiaoxiao2025-09-20  529

    一、释放资源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

    转载请注明原文地址: https://ju.6miu.com/read-1302851.html
    最新回复(0)