Ok hvala na savetu. Odlucio sam da prvo ekstraktujem res i dll-a i tek onda da ga pokrenem ali mi nešto ne ideo od ruke.
Proceduru za ekstract imam u dll-u a procedu pozivam iz exe aplikacije. Kad ekstraktujem dobijem putty.exe od 0 bytes. Procedura je ok jer kad sam istu proceduru stavio u exe aplikaciju sve je radilo kako treba.
Code:
// Procedure u DLL-u
procedure ExtractRes(ResName,ResType,ResPath:String);
var
ResourceLocation: HRSRC;
cFileHandle, cResourceDataHandle: THandle;
cResourceSize, cBytesWritten: Longword;
cResourcePointer: PChar;
begin
ResourceLocation := FindResource(HInstance,PChar(ResName),PChar(ResType));
cResourceSize := SizeofResource(HInstance,ResourceLocation);
cResourceDataHandle := LoadResource(HInstance,ResourceLocation);
cResourcePointer := LockResource(cResourceDataHandle);
cFileHandle := CreateFile(PChar(ResPath),GENERIC_WRITE,FILE_SHARE_WRITE,nil,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
WriteFile(cFileHandle, cResourcePointer^, cResourceSize,cBytesWritten,nil);
CloseHandle(cFileHandle);
end;
Procedure Extract;
begin
ExtractRes('putty', 'exe', 'putty.exe');
end;
exports
Extract;
// Procedura u EXE Aplikaciji
procedure Extract; stdcall; external moj.dll';
procedure TForm1.Button1Click(Sender: TObject);
var
DLLHandle: THandle;
Trans: TTransferPtr;
begin
// Učitaj dll
DLLHandle := LoadLibrary ('moj.dll');
// Ako je uspešno učitavanje ...
if DLLHandle <> 0 then Extract;
else
Showmessage('Greška je došlo pri učitavanju dll-a');
end;
[Ovu poruku je menjao savkic dana 29.06.2015. u 14:23 GMT+1]