Einzelnen Beitrag anzeigen

MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#1

Problem mit UpdateResource und XP-Manifest

  Alt 24. Mai 2004, 19:58
na guten Abend !

Ich möchte ein kleines tool schreiben, mit dem ich das XP-Manifest nachträglich in compilierte Exe-Files integrieren kann. Also nicht einexternes Manifest namens "Programname.exe.manifest".

Eigentlich klappt das auch schon alles:

Delphi-Quellcode:
function MAKELANGID(const usPrimaryLanguage : WORD;const usSubLanguage : WORD) : WORD;
begin
  Result := (usSubLanguage shl 10) or usPrimaryLanguage;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  stream: TFilestream;
  hInst: THandle;
  ptr: Pointer;
begin
  stream := TFileStream.Create('C:\test.manifest', fmOpenRead);
  getmem (ptr,Stream.size+1);
  try
    stream.Seek(soFromBeginning, 0);
    stream.read(ptr^, Stream.size);
    hInst := BeginUpdateResource('C:\test.exe', false);
    if hInst > 0 then begin
      UpdateResource(hInst, MakeIntResource(24), '1',
      MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL), ptr, Stream.size);
      EndUpdateResource(hInst, false);
    end;
  finally
    freemem(ptr, Stream.size+1);
    stream.Free;
  end;
end;
Das XP-Manifest:
Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity
     type="win32"
    name="DelphiApplication"
    version="1.0.0.0"
     processorArchitecture="*"/>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
        type="win32"
        name="Microsoft.Windows.Common-Controls"
        version="6.0.0.0"
        publicKeyToken="6595b64144ccf1df"
        language="*"
        processorArchitecture="*"/>
    </dependentAssembly>
  </dependency>
</assembly>
Zum testen hab ich einfach kurz ein Delphi-Programm mit verschiedenen Controls erstellt, + das gleiche mit eingebundenem XP-Manifest von Delphi. Anschliesend das ohne XP-Manifest mit meinem Programm modifieziert und im Resource Hacker verglichen, identisch ! Allerdings werden bei dem von mir modifizierten Programm die Controls nicht im XP-Style angezeigt.

Was mach ich falsch ?

gruss
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat