Thema: Delphi DLL als *.res Datei

Einzelnen Beitrag anzeigen

sk0r

Registriert seit: 1. Mai 2007
181 Beiträge
 
Delphi 7 Enterprise
 
#1

DLL als *.res Datei

  Alt 10. Mai 2007, 04:55
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
  Mit Zitat antworten Zitat