Einzelnen Beitrag anzeigen

Avax2k

Registriert seit: 6. Okt 2005
186 Beiträge
 
Delphi 2005 Professional
 
#1

Aufruf von Resource will nicht funktionieren

  Alt 28. Okt 2005, 05:50
hallo habe folgenden Code um eine Datei aus einer Res-datei auszuführen
Delphi-Quellcode:
implementation

{$R *.dfm}
{$R F:\Test.res}

function ExtractResTo(Instance: LongWord; BinResName, NewPath, ResType: PChar): Boolean;
(*******************************************************************************
Function:  ExtractResTo
Returns:    Boolean (true=success)
Version:    Function version 3.0[mod]
            Parameters modified, SEH stripped.
*******************************************************************************)

var
  ResSize,
    HG,
    HI,
    SizeWritten,
    hFileWrite: LongWord;
begin
  result := false;
  HI := FindResource(Instance, BinResname, ResType);
  if HI <> 0 then
  begin
    HG := LoadResource(Instance, HI);
    if HG <> 0 then
    begin
      ResSize := SizeOfResource(Instance, HI);
      hFileWrite := CreateFile(NewPath, GENERIC_READ or GENERIC_WRITE,
        FILE_SHARE_READ or FILE_SHARE_WRITE, nil, CREATE_ALWAYS,
        FILE_ATTRIBUTE_ARCHIVE, 0);
      if hFileWrite <> INVALID_HANDLE_VALUE then
      begin
        result := (WriteFile(hFileWrite, LockResource(HG)^, ResSize,
          SizeWritten, nil) and (SizeWritten = ResSize));
        CloseHandle(hFileWrite);
      end;
    end;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
ExtractResTo(HInstance,'Test.res','F:\',RT_RCDATA);
ShellExecute(Application.Handle, 'open', 'F:\Test.exe',nil,nil,SW_SHOW);
end;
die Mainform wird aufgerufen, ohne fehler, jedoch die Test.exe nicht aus der test.res entpackt und auch nicht ausgeführt.
Der Inhalt der RC-Datei die mit BCC32 ausgeführt wurde war wie folgt:
Zitat:
Prog1 RCDATA Test.exe
habe ich jetzt den Befehl falsch aufgerufen, oder ist da woanders einFehler, der die Datei nicht wieder aus der Res extrahieren will??

wäre dankbar, wenn jemand den Aufruf, sofern dieser falsch sein sollte korrigiert oder einen anderen fehler der ursächlich ist.
  Mit Zitat antworten Zitat