![]() |
UpdateResource und Resource Section
Hi,
ich hab grad ein Problem mit UpdateResource... Das Problem ist, innerhalb einer DLL besteht eine Sektion mit dem Namen IMAGES, innerhalb dieser Sektion gibt es Bilder vom Typ JPEG, die Bilder haben z.b. als Namen 5031 usw... Meine Frage ist nun wie ich die Bilder innerhalb dieser DLL mit UpdateResource updaten (austauschen) kann, da UpdateResource ja einen ResourceTypen erwartet. Meine Vermutung ist nun das ich die Bilder nicht austauschen kann, da ich kein RT_Data oder sowas in der art in der DLL hab sondern eben besagte Sektion mit Namen IMAGES... Hat jemand ne Idee wie ich die trotzdem austauschen kann? Images -------5031 Type JPEG Grüsse s! |
Re: UpdateResource und Resource Section
[edit] war blöd
[add] Du kannst ja auch erstmal mit EnumResourceTypes und EnumResourceNames schauen was da ist? |
Re: UpdateResource und Resource Section
Hmm wär ne Überlegung :idea:
Muss ich mir mal ansehen :shock: |
Re: UpdateResource und Resource Section
Irgendwie bin ich zu blöd dazu :shock:
Zumindest wird nun die Section IMAGE in der DLL gefunden, mein JPEG in die Section eingefügt, nur hab ich nun nach dem UpdateResource Aufruf z.b. 2 JPEGS darin mit dem Namen 5031 anstelle von einem! :mrgreen: Ein weiteres Problem kann später auch noch sein, das mein JPEG in der Dll eine Language von Neutral hat, die alte aber ENGLISH ist.
Delphi-Quellcode:
Aufruf:
var
ResLanguage: Word; function EnumResLangProc(hModule: HMODULE; lpType, lpName: PChar; wIDLanguage: Word; lParam: Longint): BOOL; stdcall; begin ResLanguage := wIDLanguage; Result := False; end; procedure UpdateJPEGResource(const ModulePath, JPEGName, ResourceName: string); var hModule, hUpdate: THandle; fs: TFileStream; Data: Pointer; begin Data := nil; hModule := LoadLibrary(PChar(ModulePath)); try if hModule = 0 then RaiseLastOSError; EnumResourceLanguages(hModule, 'IMAGE', PChar(ResourceName), @EnumResLangProc, 0); finally FreeLibrary(hModule); end; hUpdate := BeginUpdateResource(PChar(ModulePath), false); try if hUpdate = 0 then RaiseLastOSError; fs := TFileStream.Create(JPEGName, fmOpenRead); Data := AllocMem(fs.Size); fs.Read(Data^, fs.Size); if not UpdateResource(hUpdate, 'IMAGE', PChar(ResourceName), ResLanguage, Data, fs.Size) then RaiseLastOSError; if not EndUpdateResource(hUpdate, False) then RaiseLastOSError; finally if Data <> nil then FreeMem(Data); FreeAndNil(fs); end; end;
Delphi-Quellcode:
Sieht dann so aus:
UpdateJPEGResource('C:\blub.dll', 'C:\5031.jpg', '5031');
IMAGE -----5031 (neues JPEG = LANG_NEUTRAL, SUBLANG_NEUTRAL) -----5031 (altes JPEG = LANG_ENGLISH, SUBLANG_ENGLISH_US) Statt: IMAGE ----5031 (neues JPEG = LANG_ENGLISH, SUBLANG_ENGLISH_US) Grüsse s! |
Re: UpdateResource und Resource Section
Versuch mal das: :gruebel:
Delphi-Quellcode:
UpdateJPEGResource('C:\blub.dll', 'C:\5031.jpg', PChar(5031));
|
Re: UpdateResource und Resource Section
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz