Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.012 c
4-11553
Diamond Cat
2002-09-21 01:47
2002.11.04
Перерисовка


4-11561
[lamer]Barmaglot
2002-09-23 09:17
2002.11.04
GradientFill


6-11358
Rio
2002-09-04 10:27
2002.11.04
NMSmtp


3-11112
theEnter
2002-10-16 12:36
2002.11.04
Как узнать какая запись выделена в dbgrid ?


3-11049
Lucifer2002
2002-10-14 18:32
2002.11.04
DBGrid




   Наверх