Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.07.13;
Скачать: CL | DM;

Вниз

Ресурсы в EXE-файле - Иконка   Найти похожие ветки 

 
TForumHelp ©   (2008-06-15 11:07) [0]

Здраствуйте.

Помогите пожалуйста программно изменить иконку exe-файла. я написал функцию:

Function PutStreamToResource(vFileName : String; vResName : String; var vStream : TMemoryStream; vlpType : PAnsiChar = RT_EXEFILE; vLang : Integer = 1049) : Boolean;

Function PutStreamToResource(vFileName : String; vResName : String; var vStream : TMemoryStream; vlpType : PAnsiChar = RT_EXEFILE; vLang : Integer = 1049) : Boolean;
var
 vHrs : DWORD;
 vRes : TResourceStream;
begin
 Result := True;
 try
   vResName := UpperCase(vResName);
   vHrs := BeginUpdateResource(PChar(vFileName), false);
   UpdateResource(vHrs, vlpType, PChar(vResName), vLang,         vStream.Memory, vStream.Size);
   EndUpdateResource(vHrs, false);
 except
   Result := False;
 exit;
end;

end;


использовал в качестве vlpType и RT_ICON и RT_GROUPICON (кажется так - уже не помню :( ), но ничего не выходит. Помогите пожалуйста - очень нужно. Иконка может быть любого размера, а также может быть многостраничной.


 
Дмитрий С   (2008-06-15 11:24) [1]


> ничего не выходит

что именно?


 
TForumHelp ©   (2008-06-15 11:45) [2]


> что именно?


ресурс заменяется, но иконка нет. На месте иконки просто нулевой ресурс.


 
Renegat   (2008-06-15 11:52) [3]

А вы часом не в своей же работающей программе это заменять собрались? Если да, то стоит не менять сам файл, а создать его копию а только потом её апдейтить (это наиболее простой способ. Пляски с бубном вокруг таблиц хендлов, DMA и унмапа из памяти не рассматриваем), так как винда тупо не даст записать что-либо в исполнимый файл, чей образ висит в памяти.


 
TForumHelp ©   (2008-06-15 11:53) [4]


> винда тупо не даст записать что-либо в исполнимый файл


я работаю с "чужим" файлом.


 
sniknik ©   (2008-06-15 15:34) [5]


> UpdateResource ...

If the function fails, the return value is zero. To get extended error information, call GetLastError.


или Win32Check + F1.


 
TForumHelp ©   (2008-06-15 20:02) [6]

через try except прогнал - ошибок не было. GetLastError - тоже ничего не вернула. Может иконка должна быть определенного формата? я исп. 32-битную 32х32 пикселя.

ЗЫ: RT_ICON и RT_GROUP_ICON - посмотрел точнее.


 
sniknik ©   (2008-06-16 00:03) [7]

> через try except прогнал - ошибок не было
для виндовых функций не действует. читай хелп по этой функции там написано что и как она возвращает в случае ошибки.

> GetLastError - тоже ничего не вернула.
ну значит у тебя все хорошо, все правильно работает... и не морочь нам тут голову.

кстати, информация к размышлению... GetLastError не может ничего не вернуть, она возвращает чтото (ok) даже если ничего не произошло.
опять мозг пудришь?


 
Германн ©   (2008-06-16 01:39) [8]


> TForumHelp ©   (15.06.08 11:45) [2]
>
>
> > что именно?
>
>
> ресурс заменяется, но иконка нет. На месте иконки просто
> нулевой ресурс.
>

Переведи на русский так, как ты это понимаешь.



Страницы: 1 вся ветка

Текущий архив: 2008.07.13;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.02 c
2-1213601443
кот
2008-06-16 11:30
2008.07.13
Библиотека с использованием DataModule


2-1213456175
WebSQLNeederrr
2008-06-14 19:09
2008.07.13
try .. exception - как вывести сообщение самой ошибки


15-1211914217
Nic
2008-05-27 22:50
2008.07.13
Выбор ноутбука Часть 2


15-1211809617
Альф
2008-05-26 17:46
2008.07.13
Инсталятор с возможностью тихой установки


15-1212050322
__mirage_
2008-05-29 12:38
2008.07.13
не надоело варианты моего ника регистрировать?