Главная страница
    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
15-1212299399
LightRipple
2008-06-01 09:49
2008.07.13
Образ диска под Линуксом


15-1212012284
Житель_форума
2008-05-29 02:04
2008.07.13
Карта местности


2-1213024171
Franzy
2008-06-09 19:09
2008.07.13
Как узнать статус завершения запущенной консольной программы?


4-1192974092
ilopX
2007-10-21 17:41
2008.07.13
Недокументированная функция SetShellWindow


15-1211871564
Desdechado
2008-05-27 10:59
2008.07.13
Вот интересно





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский