Einzelnen Beitrag anzeigen

thomasschaf
(Gast)

n/a Beiträge
 
#12

AW: Programm Build - dynamisch erzeugen

  Alt 13. Mär 2012, 16:01
Nun wollte ich die andere Möglichkeit mit UpdateResource noch ausprobieren.

Wie man damit eine Resource in einer exe-Datei ändert habe ich schon herausgefunden.
Wie / wo kann ich diese Resource erstellen, die in dem zu ändernden Programm enthalten sind ?


Edit:
Jetzt weiß ich nicht wo der Fehler steckt.
Ich habe eine Resource in Programm B per lrs-file eingebunden.
Diese kann ich im Programm B selber abfragen:
LazarusResources.Find('text').Value; (Die Resource heißt text)

Ich hoffte, diese mit Programm A ändern zu können, hier mein Code:
Delphi-Quellcode:
function SetRes(filename, resname, resvalue: string): boolean;
var
  hUpdate: THandle;
  Size: DWord;
begin
  hUpdate := BeginUpdateResource(PChar(filename), True);
  if (hUpdate <> 0) and (hUpdate <> INVALID_HANDLE_VALUE) then
  begin
    try
      Size := Succ(Length(resvalue)) * SizeOf(char);
      Result := UpdateResource(hUpdate, RT_RCDATA, PChar(resname),
        0, PChar(resvalue), Size);
    finally
      EndUpdateResource(hUpdate, False);
    end;
  end;
end;
folgende Parameter verwende ich:
Syntax: SetRes('ProgrammB.exe','text','Ein Test...') Der einzige Unterschied, den ich in B festmachen kann, ist, dass das Design anders ist; ein Button wird nicht mehr blau sondern eher gräulich ist, es erinnert an win98(?).

Edit^2: habe den namen auch mal von "text" umbenannt, aber es funktioniert nicht!

Vielen Dank

Geändert von thomasschaf (13. Mär 2012 um 17:42 Uhr) Grund: Informationen hinzugefügt
  Mit Zitat antworten Zitat