是不是只能從EXE檔的icon換到另一個EXE檔的icon? |
尚未結案
|
KuengYan
一般會員 發表:18 回覆:17 積分:7 註冊:2002-08-02 發送簡訊給我 |
不好意思, 各位.
我在http://delphi.ktop.com.tw/topic.php?TOPIC_ID=61161問的問題.後來試一試. 似乎沒有辦法很容易的修改..
因為我的條件是只有一個要被改的執行檔及一個icon圖檔...
改來改去都改不出來咧..
|
Royce520
高階會員 發表:18 回覆:157 積分:100 註冊:2002-09-13 發送簡訊給我 |
我寫一段 sample code, 如下
BOOL TForm1:: ChangeExeIcon( char* szSrcFile, int iSrcIconIndex,
char* szDestFile, int iDestIconIndex)
{
HMODULE hSrcModule;
// or HINSTANCE hSrcModule;
HRSRC hSrcRes, hSrcLockRes, hSrcFindRes, hResUpdate; TIcon *pIcoFromFile = new TIcon();
pIcoFromFile->LoadFromFile(szSrcFile);
if (pIcoFromFile->Empty)
return FALSE; byte* pB;
TMemoryStream *pMS = new TMemoryStream(); __try
{
pMS->Size = 0;
pIcoFromFile->SaveToStream(pMS);
pB = (byte*)pMS->Memory; // 更新目的檔Icon
hResUpdate = BeginUpdateResource(szDestFile, FALSE);
if (!hResUpdate)
return FALSE; // !!!
//由於exe/dll 檔案中的 icon resource,
//不再含有 icon header, 所以如果要更新
//這種資源, 記得把 icon header 減掉, 它
//的大小是 22 bytes 長,這樣就可以了
//ps. 其餘部分皆來自http://delphi.ktop.com.tw/topic.php?TOPIC_ID=61161
// !!! if (!UpdateResource(
hResUpdate,
RT_ICON,
MAKEINTRESOURCE(iDestIconIndex),
0,
pB 22, // 22 是ICON檔頭長度
pMS->Size - 22
))
return FALSE; if (!EndUpdateResource(hResUpdate, FALSE))
return FALSE;
}
__finally
{
delete pMS;
delete pIcoFromFile;
} return TRUE;
} void __fastcall TForm1::Button2Click(TObject *Sender)
{
// 一般來說Exe檔的Icon Index都是1.
// if (ChangeExeIcon("alpha.ico", 1, "複製 -1.exe", 1))
if (ChangeExeIcon("belta.ico", 1, "複製 -1.exe", 1))
ShowMessage("OK");
else
ShowMessage("Failed!");
}
*真實的事物最美, 簡單的道理最好, 我能體會的 太少*
------
不要忘記呼吸,不要忘記編程! ∩__∩ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |