怎样更改EXE的主图标
来源:互联网 发布:制作木马软件 编辑:程序博客网 时间:2024/05/21 10:32
function ChangeExeIcon(IcoFile, ExeFile: string): Boolean;
var
stID: ICONDIR;
stGID: GRPICONDIR;
pGrpIcon: PBYTE;
pIcon: PBYTE;
hUpdate: DWORD;
nSize, nGSize: DWORD;
hFile: THandle;
dwReserved: DWORD;
ret: Boolean;
begin
Result := False;
hFile := CreateFile(PChar(IcoFile), GENERIC_READ, 0, nil, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, 0);
if hFile = INVALID_HANDLE_VALUE then
Exit;
try
ReadFile(hFile, stID, Sizeof(ICONDIR), dwReserved, nil);
nSize := stID.idEntries.dwBytesInRes;
GetMem(pIcon, nSize);
SetFilePointer(hFile, stID.idEntries.dwImageOffset, nil, FILE_BEGIN);
ReadFile(hFile, pIcon^, nSize, dwReserved, nil);
stGID.idType := 1;
stGID.idCount := stID.idCount;
stGID.idReserved := 0;
CopyMemory(@stGID.idEntries.bWidth, @stID.idEntries.bWidth, 12);
stGID.idEntries.nID := 0;
nGSize := Sizeof(GRPICONDIR);
GetMem(pGrpIcon, nGSize);
CopyMemory(pGrpIcon, @stGID, nGSize);
hUpdate := BeginUpdateResource(PChar(ExeFile), False);
try
ret := UpdateResource(hUpdate, RT_GROUP_ICON, MAKEINTRESOURCE(1), 0, pGrpIcon, nGSize);
ret := UpdateResource(hUpdate, RT_ICON, MAKEINTRESOURCE(1), 0, pIcon, nSize);
finally
EndUpdateResource(hUpdate, False);
end;
finally
CloseHandle(hFile);
end;
Result := ret;
end;
记得type
PICONDIRENTRY = ^ICONDIRENTRY;
ICONDIRENTRY = packed record
bWidth: Byte;
bHeight: Byte;
bColorCount: Byte;
bReserved: Byte;
wPlanes: Word;
wBitCount: Word;
dwBytesInRes: DWORD;
dwImageOffset: DWORD;
end;
PICONDIR = ^ICONDIR;
ICONDIR = packed record
idReserved: Word;
idType: Word;
idCount: Word;
idEntries: ICONDIRENTRY;
end;
PGRPICONDIRENTRY = ^GRPICONDIRENTRY;
GRPICONDIRENTRY = packed record
bWidth: Byte;
bHeight: Byte;
bColorCount: Byte;
bReserved: Byte;
wPlanes: Word;
wBitCount: Word;
dwBytesInRes: DWORD;
nID: Word;
end;
PGRPICONDIR = ^GRPICONDIR;
GRPICONDIR = packed record
idReserved: Word;
idType: Word;
idCount: Word;
idEntries: GRPICONDIRENTRY;
end;
使用
ChangeExeIcon(ExtractFilePath(Paramstr(0))+'temp.ico',ExtractFilePath(Paramstr(0))+'test.exe') ;
我自己在用的。。不失真。。
- 怎样更改EXE的主图标
- 对C#的exe更改图标
- 更改exe图标
- winform exe图标更改
- vc给exe更改图标
- 更改MFC生成的程序的默认exe图标
- VC6.0更改生成的exe文件图标
- VC6.0更改生成的exe文件图标
- VC6.0更改生成的exe文件图标
- MFC 生成 exe文件的图标更改方法(转)
- MFC 生成 exe文件的图标更改方法(转)
- MFC 生成 exe文件的图标更改方法(转)
- MFC 生成 exe文件的图标更改方法
- MFC中对生成exe文件的图标更改方法
- MFC 生成 exe文件的图标更改方法(转)
- MFC 生成 exe文件的图标更改方法
- MFC 生成 exe文件的图标更改方法
- MFC 生成 exe文件的图标更改…
- Doxygen简单经验谈。。。
- 还是ssh框架下的问题呢!
- 嵌入式GUI FTK介绍(1)-基本组件
- MJ评-[啊凡答]-9.5分(IMAX)
- JSP入门详细讲解
- 怎样更改EXE的主图标
- SNMP基础(二):MIB节点的查找
- Chrome AdBlock导致RememberTheMilk无法添加新的任务
- [每天读一点英文:那些给我勇气的句子] alone but not lonely
- 用空字符串替换除数字以外的字符
- 常用的一些正则表达式
- 139条暴强个性签名,笑不死你死不休
- 大项目、小项目都是程序员成熟之道
- 防止重复启动应用程序