想知道,熊猫烧香把应用程序的图标都换了是怎么具体实现的 请问,每个应用程序都有自己的图标,我想知道熊猫烧香怎么能把所有的应用程序的图标都换了呢?是不是,先扫描每个应用程序,然后一个一个换?如果是的话,具体怎么实现? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 资源文件,修改主程序的icon吧。 winapifunction ChangeExeIcon(IcoFile, ExeFile: string): Boolean;varstID: ICONDIR;stGID: GRPICONDIR;pGrpIcon: PBYTE;pIcon: PBYTE;hUpdate: DWORD;nSize, nGSize: DWORD; hFile: THandle;dwReserved: DWORD; ret: Boolean;beginResult := 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; private { Private declarations } public { Public declarations } end;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; Delphi 多语言界面问题 推荐基本delphi入门之类的好书 查询的问题。 高份求助QickReport报表预览时不显示结果,退出时出现win32 error 菜鸟问题,谢谢 如何连接网站上的数据库 ,例如:http://www.kk.com/mydata.mdb,如何用ADO直接连接。 在主窗体打开以后,再想自动打开一个提示窗体,该如何实现 给分的问题!建立索引如何能加快查询! 来者有分 请教高手哪里有比较直观的EDIT控件下载(要分自已说 ) getprocaddress的第二个参数 delphi怎么改Button的底色。
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;
private
{ Private declarations }
public
{ Public declarations }
end;
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;