![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ресурсы в EXE-файле - Иконка
TForumHelp © (2008-06-15 11:07:00)Здраствуйте.
Помогите пожалуйста программно изменить иконку 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-16 01:39:00) [1]
> TForumHelp © (15.06.08 11:45) [2]
>
>
> > что именно?
>
>
> ресурс заменяется, но иконка нет. На месте иконки просто
> нулевой ресурс.
>
Переведи на русский так, как ты это понимаешь.
sniknik (2008-06-16 00:03:00) [2]> через try except прогнал - ошибок не было
для виндовых функций не действует. читай хелп по этой функции там написано что и как она возвращает в случае ошибки.
> GetLastError - тоже ничего не вернула.
ну значит у тебя все хорошо, все правильно работает... и не морочь нам тут голову.
кстати, информация к размышлению... GetLastError не может ничего не вернуть, она возвращает чтото (ok) даже если ничего не произошло.
опять мозг пудришь?
TForumHelp (2008-06-15 20:02:00) [3]через
try exceptпрогнал - ошибок не было.GetLastError- тоже ничего не вернула. Может иконка должна быть определенного формата? я исп. 32-битную 32х32 пикселя.
ЗЫ:RT_ICONиRT_GROUP_ICON- посмотрел точнее.
sniknik (2008-06-15 15:34:00) [4]
> UpdateResource ...
If the function fails, the return value is zero. To get extended error information, call GetLastError.
или Win32Check + F1.
TForumHelp (2008-06-15 11:53:00) [5]
> винда тупо не даст записать что-либо в исполнимый файл
я работаю с "чужим" файлом.
Renegat (2008-06-15 11:52:00) [6]А вы часом не в своей же работающей программе это заменять собрались? Если да, то стоит не менять сам файл, а создать его копию а только потом её апдейтить (это наиболее простой способ. Пляски с бубном вокруг таблиц хендлов, DMA и унмапа из памяти не рассматриваем), так как винда тупо не даст записать что-либо в исполнимый файл, чей образ висит в памяти.
TForumHelp (2008-06-15 11:45:00) [7]
> что именно?
ресурс заменяется, но иконка нет. На месте иконки просто нулевой ресурс.
Дмитрий С (2008-06-15 11:24:00) [8]
> ничего не выходит
что именно?