شنبه 27 فروردین 1384, 00:21 صبح
سلام بچه ها
من وقتی از فایل shell32.dll آیکون ها رو ectract میکنم رنگشون عوض میشه فکر کنم باید به خاطر 16بیتی بودنش باشه
شما احیانا میدونین چیکار باید کرد؟
اینم کدش:
begin
iconCount := extracticonEx(pchar(srcPath),-1,phiconlarge^,phIconSmall^,0);
result := iconCount;
if iconcount = 0 then
exit;
getmem(phiconlarge,sizeof(HICON)*iconCount);
ico := TIcon.create;
pTemp := phiconLarge;
try {2}
extracticonEx(pchar(srcPath),0,phiconlarge^,phIcon Small^,iconCount);
for i:= 0 to iconcount - 1 do
begin {3}
ico.Handle := phiconlarge^;
//drawicon(ico.handle,0,0,ico.handle);
if not(ico.Empty) then
ico.savetofile(destPath+changefileext(extractFileN ame(srcPath),'')+inttostr(i)+'.ico');
inc(phiconlarge);
end; {3}
finally
phiconLarge := pTemp;
freemem(phiconlarge,sizeof(HICON)*iconCount);
ico.free;
end; {2}
end; {1}
من وقتی از فایل shell32.dll آیکون ها رو ectract میکنم رنگشون عوض میشه فکر کنم باید به خاطر 16بیتی بودنش باشه
شما احیانا میدونین چیکار باید کرد؟
اینم کدش:
begin
iconCount := extracticonEx(pchar(srcPath),-1,phiconlarge^,phIconSmall^,0);
result := iconCount;
if iconcount = 0 then
exit;
getmem(phiconlarge,sizeof(HICON)*iconCount);
ico := TIcon.create;
pTemp := phiconLarge;
try {2}
extracticonEx(pchar(srcPath),0,phiconlarge^,phIcon Small^,iconCount);
for i:= 0 to iconcount - 1 do
begin {3}
ico.Handle := phiconlarge^;
//drawicon(ico.handle,0,0,ico.handle);
if not(ico.Empty) then
ico.savetofile(destPath+changefileext(extractFileN ame(srcPath),'')+inttostr(i)+'.ico');
inc(phiconlarge);
end; {3}
finally
phiconLarge := pTemp;
freemem(phiconlarge,sizeof(HICON)*iconCount);
ico.free;
end; {2}
end; {1}