AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi UpdateResource und Resource Section
Thema durchsuchen
Ansicht
Themen-Optionen

UpdateResource und Resource Section

Ein Thema von stOrM · begonnen am 14. Apr 2010 · letzter Beitrag vom 15. Apr 2010
Antwort Antwort
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
434 Beiträge
 
Delphi 10.3 Rio
 
#1

UpdateResource und Resource Section

  Alt 14. Apr 2010, 15:04
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!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.147 Beiträge
 
Delphi 12 Athens
 
#2

Re: UpdateResource und Resource Section

  Alt 14. Apr 2010, 15:13
[edit] war blöd

[add]
Du kannst ja auch erstmal mit EnumResourceTypes und EnumResourceNames schauen was da ist?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
434 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: UpdateResource und Resource Section

  Alt 14. Apr 2010, 15:21
Hmm wär ne Überlegung
Muss ich mir mal ansehen
  Mit Zitat antworten Zitat
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
434 Beiträge
 
Delphi 10.3 Rio
 
#4

Re: UpdateResource und Resource Section

  Alt 15. Apr 2010, 08:50
Irgendwie bin ich zu blöd dazu
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!

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:
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;
Aufruf:

  UpdateJPEGResource('C:\blub.dll', 'C:\5031.jpg', '5031'); Sieht dann so aus:

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!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.147 Beiträge
 
Delphi 12 Athens
 
#5

Re: UpdateResource und Resource Section

  Alt 15. Apr 2010, 09:12
Versuch mal das:
UpdateJPEGResource('C:\blub.dll', 'C:\5031.jpg', PChar(5031));
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
434 Beiträge
 
Delphi 10.3 Rio
 
#6

Re: UpdateResource und Resource Section

  Alt 15. Apr 2010, 09:29
Zitat von himitsu:
Versuch mal das:
UpdateJPEGResource('C:\blub.dll', 'C:\5031.jpg', PChar(5031));
Hmmm das gibt dann ne Zugriffsverletzung
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz