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.