-
Измененный код: s:=ExtractFilePath(ParamStr(0))+application.exename;
hExe:=LoadLibrary(PChar(S));
if (hExe=0) then RaiseLastWin32Error();
hRes:=FindResource(hExe, MakeIntResource(3), RT_ICON);
if (hRes=0) then RaiseLastWin32Error();
hResLoad:=LoadResource(hExe, hRes);
if (hResLoad=0) then RaiseLastWin32Error();
lpResLock:=LockResource(hRes);
if (lpResLock=nil) then RaiseLastWin32Error();
SS:=EXEFileName;
hUpdateRes:=BeginUpdateResource(PChar(SS), false);
if (hUpdateRes=0) then RaiseLastWin32Error();
result:=UpdateResource(hUpdateRes,
RT_ICON,
MakeIntResource(3),
LANG_NEUTRAL,
lpResLock,
SizeofResource(hExe, hRes));
if result=False then RaiseLastWin32Error();
EndUpdateResource(hUpdateRes, false);
FreeLibrary(hExe); Пишет, что не найден указанный модуль.... ??
-
> Пишет, что не найден указанный модуль
Какая строчка вызывает ошибку ?
> MakeIntResource(3)
Почему 3 ?
-
> Какая строчка вызывает ошибку ?
Не знаю.
> Почему 3 ?
Какой надо задать параметр?
-
> Не знаю
Пройдись пошагово отладчиком и узнай.
> Какой надо задать параметр?
ID иконки
-
> ID иконки
Ее название? У меня "I1" - эта та, на которую надо изменить.
-
ставлю s:=application.exename; - вообще ничего не изменяется
-
> У меня "I1" - эта та, на которую надо изменить
Скриншот покажи ..
-
Скриншот чего? Файла ресурсов? И как я его покажу? Здесь нельзя его прикладывать...Могу на мыло скинуть.
-
Покажи скриншот икон-ресурсов обоих exe ..
-
> Скриншот чего?
Скриншоты ResExplorer'а, когда ты им просматриваешь exe-файлы (файл твоего приложения и файл приложения, в котором надо заменить иконку)
> Здесь нельзя его прикладывать
На то есть slil.ru
-
-
-
Чудесно.
А скриншот ресурсов другого exe ?
-
см.выше
-
-
Сейчас пробую...Пишет, что не знает тип TFile - это из какого модуля?
-
> не знает тип TFile
Нафиг он тебе сдался, этот TFile ? В примере иконка читается из некоего стороннего файла-контейнера, а у тебя другой случай - ты ее читаешь из своих ресурсов.
-
Было бы проще. Я бы вынул из ресурса иконку, сохранил ее на диске и запустил приведенную процедуру, присвоив IcoFileName путь к "вынутой" иконке.
-
Блин, не одно так другое: пишет, что не может создать OUTPUT-файл приложения. Программа не запускается. Убрал описание этой процедуры. Все равно.
Из-за чего это может возникнуть?
-
> Я бы вынул из ресурса иконку, сохранил ее на диске
Не нужно ничего сохранять на диске.
Свою иконку ты успешно считываешь в память ? Этого достаточно.
А второй этап - собственно запись считанной в память иконки в ресурс другого exe-модуля.
Вот и смотри в примере, какова последовательность действий на этом этапе:
там участвует ресурс RT_GROUT_ICON-ресурс 'MAINICON', не прочитав предварительно который ты не сможешь добраться до ID RT_ICON-ресурса конкретной интересующей тебя иконки
|