替換exe可執行文件的圖標:
1、首先取得源資源的指針;
2、利用UpdateResource函數進行替換;
void CDlgTest2Dlg::OnBTNUpdateResource()
{
// TODO: Add your control notification handler code here
HMODULE hExe;
HANDLE hUpdateRes;
HRSRC hRes;
HANDLE hResLoad;
char *lpResLock;
BOOL result;
hExe=LoadLibrary("a.exe");
if (!hExe)
{
MessageBox("載入可執行文件失敗!");
}
hRes=FindResource(hExe,MAKEINTRESOURCE(IDI_ICON1),RT_GROUP_ICON);
if (!hRes)
{
MessageBox("FindResource失敗!");
}
hResLoad=LoadResource(hExe,hRes);
if (!hResLoad)
{
MessageBox("LoadResource失敗!");
}
lpResLock=(char*)LockResource(hResLoad);
if (!lpResLock)
{
MessageBox("LockResource失敗!");
}
hUpdateRes=BeginUpdateResource("switch.exe",FALSE);
if (!hUpdateRes)
{
MessageBox("BeginUpdateResource失敗!");
}
result=UpdateResource(hUpdateRes,RT_GROUP_ICON,MAKEINTRESOURCE(IDR_MAINFRAME),
MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL),lpResLock,SizeofResource(hExe,hRes));
if (!result)
{
MessageBox("UpdateResource失敗!");
}
if (!EndUpdateResource(hUpdateRes, FALSE))
{
MessageBox("Could not write changes to file.");
}
// Clean up.
if (!FreeLibrary(hExe))
{
MessageBox("Could not free executable.");
}
}