文件操作 - 释放DLL资源到指定目录

 1 =============== Windows资源文件的读取 ===============
 2 
 3 Windows资源操作函数 
 4  12 LoadAccelerators  加载快捷键资源
 5 
 6  14 LoadBitmap      加载位图资源
 7 
 8  16 LoadCursor       加载光标资源
 9 
10  18 LoadIcon       加载图标资源
11 
12  20 LoadMenu       加载菜单资源
13 
14  22 LoadString     加载字符串资源
15 
16 
17 Windows资源操作函数 

29 FindResource    从指定模块中加载指定名称、类型的资源 18 19 31 SizeofResource  获取资源数据的长度 20 21 33 LoadResource   加载指定的资源至内存 22 23 35 LockResource   锁定指定的资源,并返回指向资源数据的指针 24 25 37 FreeResource   释放指定的资源 26 27 39 我们通常加载某个资源的步骤如下所示: 28 41 使用LoadLibrary()加载模块,或者获取当前应用程序的模块。 29 30 43 调用FindResource()从指定模块中查找指定的资源,返回该资源的句柄。 31 32 45 调用SizeofResource ()获取资源数据的长度。 33 34 47 调用LoadResource()将资源加载至内存。 35 36 49 调用LockResource()锁定资源,并返回指向资源数据的指针。 37 38 51 通过数据指针操作数据。 39 40 53 使用完毕,调用FreeResource()释放指定的资源。 41 42 // 释放【DLL文件】到指定的文件夹 43 BOOL ReleaseDLLRes(LPCTSTR szDLLFullPath, UINT uResID, LPCTSTR szResType) 44 { 45 if (uResID<=0 || !szResType) 46 { 47 return FALSE; 48 } 49 50 HRSRC hRsrc = FindResource(NULL, MAKEINTRESOURCE(uResID), szResType); 51 if ( NULL == hRsrc ) 52 { 53 return FALSE; 54 } 55 56 DWORD dwSize = SizeofResource(NULL, hRsrc); 57 if ( dwSize <= 0) 58 { 59 return FALSE; 60 } 61 62 HGLOBAL hGlobal = LoadResource(NULL, hRsrc); 63 if ( NULL == hGlobal ) 64 { 65 return FALSE; 66 } 67 68 LPVOID pBuffer = LockResource(hGlobal); 69 if ( NULL ==pBuffer ) 70 { 71 return FALSE; 72 } 73 74 HANDLE hFile = CreateFile(szDLLFullPath, GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); 75 if (INVALID_HANDLE_VALUE == hFile ) 76 { 77 return FALSE; 78 } 79 80 81 DWORD dwWrited = 0; 82 if (FALSE == WriteFile(hFile, pBuffer, dwSize, &dwWrited, NULL) ) 83 { 84 AfxMessageBox(_T("写入失败!")); 85 return FALSE; 86 } 87 88 CloseHandle(hFile); 89 UnlockResource(hGlobal); 90 FreeResource(hGlobal); 91 return TRUE; 92 }

 

posted @ 2016-04-29 16:55  C/C++/Python/Java  阅读(1270)  评论(0编辑  收藏  举报