




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#include stdafx.h#include enum_all_icons.h#include save_icon_file_by_handle.hnamespace yg_iconBOOL CALLBACK EnumAllIconInPE:FindGroupIconProc( HANDLE hModule, LPCTSTR lpszType, LPTSTR lpszName, LONG lParam )T_map_icons* all_icons = (T_map_icons*)lParam;HRSRC ico_group_rsrc = :FindResource(HMODULE)hModule, lpszName, lpszType);if (ico_group_rsrc = NULL)return TRUE;HGLOBAL ico_group_handle = :LoadResource(HMODULE)hModule, ico_group_rsrc); if (ico_group_handle = NULL)return TRUE;GRPICONDIR* ico_group_data = (LPGRPICONDIR):LockResource(ico_group_handle); if (ico_group_data = NULL):FreeResource(ico_group_handle);return TRUE;std:map icons;for (int i = 0; i idCount; +i) GRPICONDIRENTRY* ico_entry = &ico_group_data-idEntriesi;HRSRC ico_rsrc = :FindResource(HMODULE) hModule, MAKEINTRESOURCE(ico_entry-nID), RT_ICON);if (ico_rsrc = NULL)break;HGLOBAL img_handle = :LoadResource(HMODULE)hModule, ico_rsrc);if (img_handle = NULL)break;LPVOID icon_image = :LockResource(img_handle);if (icon_image = NULL):FreeResource(img_handle);break;HICON hIcon = :CreateIconFromResourceEx(PBYTE)icon_image, ico_entry-dwBytesInRes, TRUE, 0x00030000, ico_entry-bWidth, ico_entry-bHeight, 0); icons.insert(std:make_pair(icons.size(), hIcon); all_icons-insert(std:make_pair(all_icons-size(), icons);:FreeResource(ico_group_handle);return TRUE;bool EnumAllIconInPE:EnumAll( const std:wstring& pe_path, const std:wstring& save_dir )HMODULE load_lib = :LoadLibraryEx(pe_path.c_str(), NULL, LOAD_LIBRARY_AS_DATAFILE);if(load_lib = NULL)return false;T_map_icons all_icons;:EnumResourceNames(load_lib, RT_GROUP_ICON, (ENUMRESNAMEPROC)&FindGroupIconProc, (LONG)&all_icons);MyCreateDirectory(save_dir);SaveFileByHIcon save_by_handle;T_map_icons:iterator it = all_icons.begin();T_map_icons:iterator itEnd = all_icons.end();for (; it != itEnd; +it)std:wstring save_path = save_dir + L + int2wstr(it-first) + L.ico;save_by_handle.SaveIconFile(it-second, save_path);:FreeLibrary(load_lib);return true;std:wstring EnumAllIconInPE:int2wstr( int nData )wchar_t wchBuf32 = L;_itow_s(nData, wchBuf, 32, 10);return wchBuf;BOOL EnumAllIconInPE:MyCreateDirectory( const std:wstring& strDir )if (strDir.empty() | strDir.length() 3 | strDir1 != L:)return FALSE;std:wstring sub_dir = strDir;wchar_t last_char = sub_dirsub_dir.length()-1;if ( last_char != L & last_char != L/)sub_dir += L;std:wstring:size_type gap_pos_1 = sub_dir.find_first_of(L, 0);std:wstring:size_type gap_pos_2 = sub_dir.find_first_of(L/, 0);if (gap_pos_1 = std:wstring:npos)gap_pos_1 = 0xFFFFFFFF;if (gap_pos_2 = std:wstring:npos)gap_pos_2 = 0xFFFFFFFF;std:wstring:size_type gap_pos = min(gap_pos_1, gap_pos_2);if (gap_pos = 0xFFFFFFFF)return FALSE;BOOL bRet = TRUE;std:wstring:size_type gap_pos_bak = gap_pos;while(gap_pos != std:wstring:npos)std:wstring pre_dir = strDir.substr(0, gap_pos);if(!:PathIsDirectory(pre_dir.c_str()BOOL bCreate = :CreateDirectory(pre_dir.c_str(), NULL);if (bCreate = 0)DWORD dwError = :GetLastError();if (dwError != ERROR_ALREADY_EXISTS)bRet = FALSE;break;gap_pos_bak = gap_pos;std:wstring:size_type gap_pos_1 = sub_dir.find_first_of(L, gap_pos_bak+1);std:wstring:size_type gap_pos_2 = sub_dir.find_first_of(L/, gap_pos_bak+1);if (gap_pos_1 = std:wst
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 物联网设备安全认证机制-第1篇-洞察及研究
- 矿区生态环境治理技术创新-洞察及研究
- 多源数据融合树形-洞察及研究
- 生物分子识别-洞察及研究
- 零售业采购管理规定
- 绿色供应链金融的风险管理-洞察及研究
- 新型透明导电材料开发-洞察及研究
- 规范学习行为的方案指南制度
- 有机肥微生物代谢调控-洞察及研究
- 制订大学课件教学改革方案
- 切割伤的急救处理流程
- T/CACM 1552-2023中医慢性非传染性疾病管理技术通则
- 立邦涂料协议书
- 《家具设计》课件
- 公路工程路基石方开挖破碎施工合同8篇
- 【MOOC】人工智能原理-北京大学 中国大学慕课MOOC答案
- 喷雾干燥塔操作规程模版(3篇)
- 现代交换原理第二章
- 2024版工业润滑油销售协议范例版
- 关闸马路环境监测
- 油漆作业风险和隐患辨识、评估分级与控制措施一览表
评论
0/150
提交评论