Nima NT
جمعه 24 اردیبهشت 1389, 14:18 عصر
با عرض سلام و وقت به خیر خدمت دوستان عزیز
کسی از دوستان میدونه چطوری میشه آیکون یک فایل اجرایی رو عوض کرد ؟ به عنوان مثال من یه فایل اجرایی دارم و یه آیکون با پسوند ico حالا میخوام آیکون فایل رو با این آیکون عوض کنم ( فایل اجرایی حاوی فرم و ... ) , ولی نمیدونم چطوری میشه این کار رو کرد ، ممنون میشم کمکم کنید.
با تشکر.
مهران رسا
جمعه 24 اردیبهشت 1389, 15:03 عصر
آقا نیما شما که خودت استاد این کارا هستی :بامزه:
unit iconchanger;
{shaped by shapeless}
interface
uses windows;
  type
    PICONDIRENTRYCOMMON = ^ICONDIRENTRYCOMMON;
    ICONDIRENTRYCOMMON = packed record
    bWidth             : Byte;  // Width, in pixels, of the image
    bHeight            : Byte;  // Height, in pixels, of the image
    bColorCount        : Byte;  // Number of colors in image (0 if >=8bpp)
    bReserved          : Byte;  // Reserved ( must be 0)
    wPlanes            : Word;  // Color Planes
    wBitCount          : Word;  // Bits per pixel
    dwBytesInRes       : DWord; // How many bytes in this resource?
    end;
    PICONDIRENTRY      = ^ICONDIRENTRY;
    ICONDIRENTRY       = packed record
    common             : ICONDIRENTRYCOMMON;
    dwImageOffset      : DWord; // Where in the file is this image?
    end;
    PICONDIR           = ^ICONDIR;
    ICONDIR            = packed record
    idReserved         : Word; // Reserved (must be 0)
    idType             : Word; // Resource Type (1 for icons)
    idCount            : Word; // How many images?
    idEntries          : ICONDIRENTRY; // An entry for each image (idCount of 'em)
    end;
    PGRPICONDIRENTRY   = ^GRPICONDIRENTRY;
    GRPICONDIRENTRY    = packed record
    common             : ICONDIRENTRYCOMMON;
    nID                : Word;  // the ID
    end;
    PGRPICONDIR        = ^GRPICONDIR;
    GRPICONDIR         = packed record
    idReserved         : Word; // Reserved (must be 0)
    idType             : Word; // Resource type (1 for icons)
    idCount            : Word; // How many images?
    idEntries          : GRPICONDIRENTRY;  // The entries for each image
    end;
function UpdateApplicationIcon(srcicon : PChar; destexe : PChar) : Boolean;
implementation
function UpdateApplicationIcon(srcicon : PChar; destexe : PChar) : Boolean;
var hFile  : Integer;
    id     : ICONDIR;
    pid    : PICONDIR;
    pgid   : PGRPICONDIR;
    uRead  : DWord;
    nSize  : DWord;
    pvFile : PByte;
    hInst  : LongInt;
begin
result := False;
hFile := CreateFile(srcicon, GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if hFile > 0 then
   begin
   ReadFile(hFile, id, sizeof(id), uRead, nil);
   SetFilePointer(hFile, 0, nil, FILE_BEGIN);
   GetMem(pid, sizeof(ICONDIR) + sizeof(ICONDIRENTRY));
   GetMem(pgid, sizeof(GRPICONDIR) + sizeof(GRPICONDIRENTRY));
   ReadFile(hFile, pid^, sizeof(ICONDIR) + sizeof(ICONDIRENTRY), uRead, nil);
   move(pid^, pgid^, sizeof(GRPICONDIR));
   pgid^.idEntries.common := pid^.idEntries.common;
   pgid^.idEntries.nID := 1;
   nSize := pid^.idEntries.common.dwBytesInRes;
   GetMem(pvFile, nSize);
   SetFilePointer(hFile, pid^.idEntries.dwImageOffset, nil, FILE_BEGIN);
   ReadFile(hFile, pvFile^, nSize, uRead, nil);
   CloseHandle(hFile);
   hInst:=BeginUpdateResource(destexe, False);
   if hInst > 0 then
      begin
      UpdateResource(hInst, RT_ICON, MAKEINTRESOURCE(1), LANG_NEUTRAL, pvFile, nSize);
      EndUpdateResource(hInst, False);
      result := True;
      end;
   FreeMem(pvFile);
   FreeMem(pgid);
   FreeMem(pid);
   end;
end;
end.
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=1438&lngWId=7
Felony
جمعه 24 اردیبهشت 1389, 15:06 عصر
سلام حاج نیما ، پیدات نیست برادر ؟ یک نمونه برات ضمیمه کردم.
Nima NT
جمعه 24 اردیبهشت 1389, 15:27 عصر
ممنونم ، والا مدتی حسابی سرم شلوغه ؛ مشکل بنده این بود که آیکون فایل عوض میشد ولی نه در همه حالات مثلا" اگر تو ویندوز 7 میزان بزرگنمایی View رو زیاد میکردم آیکون قبلی نمایش داده میشد که علتش رو نمیتونستم متوجه بشم ؛ خدا رو شکر در سورسهایی که محبت کردید همچین مشکلی وجود نداره.
بازم ممنونم هم از آقا مجتبی (http://www.barnamenevis.biz/forum/member.php?u=63881) و هم از دوست عزیزم .M8SPY. (http://www.barnamenevis.biz/forum/member.php?u=58987)
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.