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

Вниз

Нужна помощь с Updateresource   Найти похожие ветки 

 
Balandin_MAx   (2002-09-18 16:12) [0]

Мне надо сменить иконку у каконидь экзешника.
Я делал так:
Var
hUpdateRes, hExe : THandle;
h : hIcon;
IconIndex : word;
IpResLock : ^Char; //Это если с диалогом работать, а как быть с иконкой не //понятно..????
hRes, hResLoad : hICON;

begin
hExe := LoadLibrary ("D:\Cli.exe");
if hExe = 0 then ShowMessage ("Could not load exe.");

// hRes := FindResource(hExe, "MAINICON", RT_ICON);
// hResLoad := LoadResource (hExe, hRes);

IconIndex := 0;
hResLoad := ExtractAssociatedIcon(hInstance, "D:\Cli.EXE", IconIndex);
IpResLock := LockResource (hResLoad);
hUpdateRes := BeginUpdateResource ("d:\Internat32.exe", False);


UpdateResource (hUpdateRes, RT_ICON, "MAINICON", ???, ????, ???);
//Не совсем понятно как мне быть с языком (С четвертым параметром)
//Так же не совсем понял как быть с предпоследним параметром, если я меняю иконку,
//если менять диалоги то понятно нужен указатель на Char

EndUpdateResource (hUpdateRes, false);
FreeLibrary (hExe);
end;

Но чет не работает, и не совсем понятны вопросы которые я указал в ремароках..
Помогите кто может..плиз....


 
Карлсон ©   (2002-09-22 01:22) [1]

ну и где же хваленые мастера-всезнайки?
я не в упрек, просто этот вопрос очень многих интересует.


 
SPeller ©   (2002-09-22 05:25) [2]

Дело может быть в том что платформа 9Х не поддерживает функции по созданию/изменению ресурсов. Чтобы убедиться вызови FormatMessage с GetLastError.


 
Карлсон ©   (2002-09-22 13:04) [3]

а как же тогда быть с программами, которые абсолютно точно написаны на дельфи и они стопудово меняют иконки у любых файлов?
вот например ResHack, сделанный не дельфи, меняет значки и еще много чаво делает.
как же тогда это обьяснить?


 
Anatoly Podgoretsky ©   (2002-09-22 13:14) [4]

Это обхяснить просто
1. они правильно написаны
2. они не используют BeginUpdateResource
3. они не берут на понт местных программистов


 
Карлсон ©   (2002-09-22 14:11) [5]

а что значит ваше "правильно написаны" ?
а что же тогда они используют?


 
Anatoly Podgoretsky ©   (2002-09-22 14:17) [6]

Что именно используют, могут ответить авторы, я же не имею права делать реверс инжинеринг


 
avm2002 ©   (2002-09-23 12:00) [7]

Вот процедуры, которая обноваляет ресурс в бинарном файле.
Думаю, что из примера все понятно


procedure ResourceBufferToFile(AFileName: String; ABuf: Pointer; ABufSize : DWORD;
AResourceName: String);

function MakeLangID(APrimaryLanguage, ASubLanguage: Word) : Word;
begin
Result := ASubLanguage shl 10 + APrimaryLanguage;
end;

var
HUpd : THandle;
Updated : BOOL;
Lang : Word;
begin
Lang := makelangID(LANG_NEUTRAL, SUBLANG_NEUTRAL);
HUpd := BeginUpdateResource(PChar(AFileName), False);
if HUpd = 0 then
raise Exception.CreateFmt(SOpenError, [AFileName]);
Updated := UpdateResource(HUpd, RT_RCDATA, PChar(AResourceName), Lang, ABuf, ABufSize);
EndUpdateResource(HUpd, not Updated);
end;



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

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

Наверх




Память: 0.48 MB
Время: 0.017 c
1-11259
Whippi
2002-10-23 10:05
2002.11.04
Ваабще ничего не понимаю, помогите разобраться


1-11182
Lola
2002-10-24 14:05
2002.11.04
Нумерация недель в календаре


4-11548
d-coder
2002-09-22 14:16
2002.11.04
Как получить номер строки в StringGrid при выделении строки


14-11391
DeMoN-777
2002-10-16 14:05
2002.11.04
ScrollLock


14-11424
Dmitriy Polskoy
2002-10-15 10:24
2002.11.04
Delphi Personal