VC函数修改EXE图标
来源:互联网 发布:js获取当前浏览器类型 编辑:程序博客网 时间:2024/05/20 18:52
#include 《stdio.h》
#include 《windows.h》
#include 《tchar.h》
struct ICONDIRENTRY
{
BYTE bWidth;
BYTE bHeight;
BYTE bColorCount;
BYTE bReserved;
WORD wPlanes;
WORD wBitCount;
DWORD dwBytesInRes;
DWORD dwImageOffset;
};
struct ICONDIR
{
WORD idReserved;
WORD idType;
WORD idCount;
//ICONDIRENTRY idEntries;
};
struct GRPICONDIRENTRY
{
BYTE bWidth;
BYTE bHeight;
BYTE bColorCount;
BYTE bReserved;
WORD wPlanes;
WORD wBitCount;
DWORD dwBytesInRes;
WORD nID;
};
struct GRPICONDIR
{
WORD idReserved;
WORD idType;
WORD idCount;
GRPICONDIRENTRY idEntries;
};
//////////////////////////////////////////////
//函数说明:修改EXE图标
//
//参 数:IconFile 图标文件
// ExeFile 被修改的EXE文件
//
//返回值: 成功为True,否则False
/////////////////////////////////////////////
bool ChangeExeIcon(LPCSTR IconFile, LPCSTR ExeFile);
//////////////////////////////////////////////
//函数说明:修改EXE图标
//
//参 数:IconFile 图标文件
// ExeFile 被修改的EXE文件
//
//返回值: 成功为True,否则False
/////////////////////////////////////////////
bool ChangeExeIcon(LPCSTR IconFile, LPCSTR ExeFile)
{
ICONDIR stID;
ICONDIRENTRY stIDE;
GRPICONDIR stGID;
HANDLE hFile;
DWORD nSize, nGSize, dwReserved;
HANDLE hUpdate;
PBYTE pIcon, pGrpIcon;
BOOL ret;
hFile = CreateFile(IconFile, GENERIC_READ, NULL, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
return false;
}
ZeroMemory(&stID, sizeof(ICONDIR));
ret = ReadFile(hFile, &stID, sizeof(ICONDIR), &dwReserved, NULL);
ZeroMemory(&stIDE, sizeof(ICONDIRENTRY));
ret = ReadFile(hFile, &stIDE, sizeof(ICONDIRENTRY), &dwReserved, NULL);
nSize = stIDE.dwBytesInRes;
pIcon = (PBYTE)malloc(nSize);
SetFilePointer(hFile, stIDE.dwImageOffset, NULL, FILE_BEGIN);
ret = ReadFile(hFile, (LPVOID)pIcon, nSize, &dwReserved, NULL);
if (!ret)
{
CloseHandle(hFile);
return false;
}
ZeroMemory(&stGID, sizeof(GRPICONDIR));
stGID.idCount = stID.idCount;
stGID.idReserved = 0;
stGID.idType = 1;
CopyMemory(&stGID.idEntries, &stIDE, 12);
stGID.idEntries.nID = 0;
nGSize = sizeof(GRPICONDIR);
pGrpIcon = (PBYTE)malloc(nGSize);
CopyMemory(pGrpIcon, &stGID, nGSize);
hUpdate = BeginUpdateResource(ExeFile, false);
ret = UpdateResource(hUpdate, RT_GROUP_ICON, MAKEINTRESOURCE(1), 0, (LPVOID)pGrpIcon, nGSize);
ret = UpdateResource(hUpdate, RT_ICON, MAKEINTRESOURCE(1), 0, (LPVOID)pIcon, nSize);
EndUpdateResource(hUpdate, false);
if (!ret)
{
CloseHandle(hFile);
return false;
}
CloseHandle(hFile);
return true;
}
- VC函数修改EXE图标
- 修改VC 生成exe 图标
- VC++编程实现修改EXE文件图标
- VC++编程实现修改EXE文件图标
- VC++编程实现修改EXE文件图标
- VC中怎样修改生成的EXE文件的图标
- VC中怎样修改生成的EXE文件的图标
- VC中怎样修改生成的EXE文件的图标
- 修改 VC 生成的 EXE 文件的图标
- win32修改.exe图标
- win32修改.exe图标
- win32修改.exe图标
- MFC修改exe图标
- vc给exe更改图标
- 修改VC程序图标
- 修改VC程序图标
- Winform修改exe默认图标
- 修改exe图标,加入版本号
- 新屋开工率 housing starts
- Bark up the wrong tree 你找错人了
- [英语阅读]世界数字图书馆明日上线
- whu分布式并行计算机技术资料
- 人类能在大脑中“锁定”上帝的想法?
- VC函数修改EXE图标
- SQL Server 2005 Paging – The Holy Grail
- SQL中处理层级数据(Hierarchies in SQL)
- 2009-04-20
- Eclipse不提示的解决办法
- 由《中移动第一季度净利润252亿》看企业的社会责任
- 软件需求文档和软件需求树状图是否是紧密对应
- 一个不想从此堕落的人给自己的无语计划
- Spring-batch comman used tools