![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Нужна помощь с Updateresource [D5, D6, Win95/98, WinME, NT4, Win2k, WinXP]
Balandin_MAx © (2002-09-18 16:12:00)Мне надо сменить иконку у каконидь экзешника.
Я делал так:
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;
Но чет не работает, и не совсем понятны вопросы которые я указал в ремароках..
Помогите кто может..плиз....
avm2002 (2002-09-23 12:00:00) [1]Вот процедуры, которая обноваляет ресурс в бинарном файле.
Думаю, что из примера все понятно
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;
Anatoly Podgoretsky (2002-09-22 14:17:00) [2]Что именно используют, могут ответить авторы, я же не имею права делать реверс инжинеринг
Карлсон (2002-09-22 14:11:00) [3]а что значит ваше "правильно написаны" ?
а что же тогда они используют?
Anatoly Podgoretsky (2002-09-22 13:14:00) [4]Это обхяснить просто
1. они правильно написаны
2. они не используют BeginUpdateResource
3. они не берут на понт местных программистов
Карлсон (2002-09-22 13:04:00) [5]а как же тогда быть с программами, которые абсолютно точно написаны на дельфи и они стопудово меняют иконки у любых файлов?
вот например ResHack, сделанный не дельфи, меняет значки и еще много чаво делает.
как же тогда это обьяснить?
SPeller (2002-09-22 05:25:00) [6]Дело может быть в том что платформа 9Х не поддерживает функции по созданию/изменению ресурсов. Чтобы убедиться вызови FormatMessage с GetLastError.
Карлсон (2002-09-22 01:22:00) [7]ну и где же хваленые мастера-всезнайки?
я не в упрек, просто этот вопрос очень многих интересует.