图标就是资源,可以动态替换的
http://www.dxmylove.com/download/ExeIcon.exe
专业图标替换工具

解决方案 »

  1.   

    记得论坛里以前有个类似的帖子,程序运行后动态修改自身的图标,你搜下论坛的贴,记得貌似是在vc\mfc版的帖子
      

  2.   

    我找到了C#版本的,谁能帮我翻译成delphi吗?谢谢
    void ReplaceExeIco(LPCTSTR lpszApp, LPCTSTR lpszIco)  
    {  
     try  
     {  
      CFile file(lpszIco, CFile::modeRead);  
      LONG lOffset = 0;  
      DWORD dwSize = 0;  
      DWORD dwBytes = 0;  
      CONST BYTE bGroupIcoSize = 0x18;  
      BYTE* lpGroupIco = new BYTE[bGroupIcoSize];  
      memset(lpGroupIco, 0, bGroupIcoSize);  
      file.Read(lpGroupIco, 0x06);  
      file.Read(lpGroupIco+0x08, 0x0C);  
      memcpy(&dwSize, lpGroupIco+0x10, sizeof(DWORD));  
      file.Read(&lOffset, sizeof(lOffset));  
      BYTE* lpRes = new BYTE[dwSize];  
      memset(lpRes, 0, dwSize);  
      file.Seek(lOffset, CFile::begin);  
      file.Read(lpRes, dwSize);  
        
      HANDLE hApp = BeginUpdateResource(lpszApp, NULL);  
      UpdateResource(hApp, RT_GROUP_ICON, MAKEINTRESOURCE(1), 0, lpGroupIco, bGroupIcoSize);  
      UpdateResource(hApp, RT_ICON, MAKEINTRESOURCE(1), 0, lpRes, dwSize);  
      
      EndUpdateResource(hApp, FALSE);  
      
      delete[] lpRes;  
      delete[] lpGroupIco;  
      file.Close();  
     }  
     catch (CException* e)  
     {  
      e->ReportError();  
      e->Delete();  
     }  
    }