Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.07.13;
Скачать: [xml.tar.bz2];

Вниз

Ресурсы в 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.006 c
2-1213618244
Муслик
2008-06-16 16:10
2008.07.13
Текст из файла


15-1212052993
User1
2008-05-29 13:23
2008.07.13
Форма авторизации


15-1211953292
1C
2008-05-28 09:41
2008.07.13
Grid


15-1211982202
@!!ex
2008-05-28 17:43
2008.07.13
Как построить матрицу проекции?


2-1213603321
Dmitry
2008-06-16 12:02
2008.07.13
#13#10





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский