Guten Morgen.
Ich möchte gerne in mein Programm ein *.res Ressourcenscript einbauen,
welche eine
Dll sein soll. Diese soll vom Programm dann erstellt werden.
Leider bekomme ich beim schreiben immer den Fehler 1784 ERROR_INVALID_USER_BUFFER.
Keine Ahnung wo der Fehler liegen könnte. Mein Code:
Ressourcenscript
Code:
dllname RT_RCDATA "C:\MeineDll"
Programmcode:
Delphi-Quellcode:
function GetResourceData(rsName, rsType: PAnsiChar): Pointer;stdcall;
var
fRes, lRes, lResSize: Cardinal;
gResData: Pointer;
begin
fRes := FindResource(GetModuleHandle(nil), rsName, rsType);
if fRes <> 0 then
begin
lRes := LoadResource(GetModuleHandle(nil), fRes);
if lRes <> 0 then
begin
gResData := LockResource(lRes);
result := gResData;
end;
end;
end;
function GetResourceSize(srsName, srsType: PAnsiChar): Cardinal;stdcall;
var
FindRes, sizeRes: Cardinal;
begin
FindRes := FindResource(GetModuleHandle(nil), srsName, srsType);
if FindRes <> 0 then
begin
sizeRes := SizeOfResource(GetModuleHandle(nil), FindRes);
if sizeRes <> 0 then
begin
result := sizeRes;
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
hcrtDll: Cardinal;
dwBytesWritten: Cardinal;
pDllRes: Pointer;
begin
pDllRes := GetResourceData('dllname', RT_RCDATA);
hcrtDll := CreateFile('MeineDll.dll', GENERIC_WRITE, FILE_SHARE_WRITE, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_HIDDEN, 0);
if hcrtDLl <> INVALID_HANDLE_VALUE then
begin
WriteFile(hcrtDll, pDllRes^, GetResourceSize('dllname', RT_RCDATA), dwBytesWritten, 0);
showmessage(inttostr(GetLastError));
Closehandle(hcrtDll);
end;
end;
Weiß jemand woran der Fehler liegt? Mit Bildern klappt alles Perfekt..
MfG