1 // 释放文件到指定的文件夹 2 BOOL ReleaseRes(LPCTSTR szDLLFullPath, UINT uResID, LPCTSTR szResType) 3 { 4 if (uResID<=0 || !szResType) 5 { 6 return FALSE; 7 } 8 9 HRSRC hRsrc = FindResource(NULL, MAKEINTRESOURCE(uResID), szResType); 10 if ( NULL == hRsrc ) 11 { 12 return FALSE; 13 } 14 15 DWORD dwSize = SizeofResource(NULL, hRsrc); 16 if ( dwSize <= 0) 17 { 18 return FALSE; 19 } 20 21 HGLOBAL hGlobal = LoadResource(NULL, hRsrc); 22 if ( NULL == hGlobal ) 23 { 24 return FALSE; 25 } 26 27 LPVOID pBuffer = LockResource(hGlobal); 28 if ( NULL ==pBuffer ) 29 { 30 return FALSE; 31 } 32 33 HANDLE hFile = CreateFile(szDLLFullPath, GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); 34 if (INVALID_HANDLE_VALUE == hFile ) 35 { 36 return FALSE; 37 } 38 39 DWORD dwWrited = 0; 40 if (FALSE == WriteFile(hFile, pBuffer, dwSize, &dwWrited, NULL) ) 41 { 42 AfxMessageBox(_T("写入失败!")); 43 return FALSE; 44 } 45 46 UnlockResource(hGlobal); 47 CloseHandle(hFile); 48 return TRUE; 49 }