![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как заменить иконку? [D6, WinXP]
Artem © (2008-01-23 22:01:00)Коллеги, помогите решить следующую задачу.
В моей программе в файле ресурсов (library.res) находится иконка. Компилировался он следующим образом:
i1 RT_ICON i1.ico
Вопрос в следующем: как заменить иконку другого приложения на ту, что находится в моей программе в файле ресурсов ("i1")?
Нашел процедуру и подправил ее под свои задачи, но не получается. В чем ошибка? Код такой:
procedure Changeicon(const EXEFileName:string;ResName:PChar);
var
hExe, hResLoad, hUpdateRes, hRes: THandle;
lpResLock: PChar;
result: Boolean;
S, SS: String;
begin
S:=paramstr(0);
hExe:=LoadLibrary(PChar(S));
if (hExe=0) then ShowMessage('Could not load exe.');
hRes:=FindResource(hExe, Pchar(ResName), RT_ICON);
if (hRes=0) then ShowMessage('Could not locate resource.');
hResLoad:=LoadResource(hExe, hRes);
if (hResLoad=0) then ShowMessage('Could not load icon.');
lpResLock:=LockResource(hRes);
if (lpResLock=nil) then ShowMessage('Could not lock icon.');
SS:=EXEFileName;
hUpdateRes:=BeginUpdateResource(PChar(SS), TRUE);
if (hUpdateRes=0) then ShowMessage('Could not open file for writing.');
result:=UpdateResource(hUpdateRes, // update resource handle
RT_ICON, // change dialog box resource
PChar(1), // icon name
LANG_NEUTRAL,
lpResLock, // ptr to resource info
SizeofResource(hExe, hRes)); // size of resource info.
if result=False then ShowMessage('Could not add resource.');
EndUpdateResource(hUpdateRes, FALSE);
FreeLibrary(hExe);
end;
Использую процедуру так:
ChangeIcon('c:\program.exe',Pchar('i1'));
Ошибка начинается с
hExe:=LoadLibrary(PChar(S));
if (hExe=0) then ShowMessage('Could not load exe.');
Нужна Ваша помощь. Заранее благодарю участников дискуссии.
Сергей М. (2008-01-23 22:21:00) [41]
> Ошибка начинается с
Что, прямо так и говорит, мол, "я, ошибка, начинаюсь с" ?