Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как заменить иконку? [D6, WinXP]


Страницы:   1 2 3

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]


> Ошибка начинается с


Что, прямо так и говорит, мол, "я, ошибка, начинаюсь с" ?


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо