In questa serie di articoli vado a raccogliere parecchi concetti: il filo
conduttore di tutto è il passaggio da un .exe realizzato in Delphi ad una dll
che esegue le stesse cose. Come al solito non mi sono spiegato un granchè,
quindi è meglio buttarsi direttamente a capofitto.1. Tradurre un .exe in una
dll
Bene... prenderemo in esame uno dei programmini che ho fatto in passato e per
la precisione l'applicativo per determinare le chiavi di registro modificate in
un dato intervallo di tempo (articolo6). Prendiamo
in esame il file .dpr (da Delphi: Project->View Source):
program RegEnum;
uses
Forms,
Main in 'Main.pas' {FrmMain},
About in 'About.pas' {FrmAbout};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TFrmMain, FrmMain);
Application.Run;
end.
la trasformazione in una dll è semplicissima 
In pratica ci siamo creati una dll, l'abbiamo chiamata con lo stesso nome dell'eseguibile ed abbiamo copiato tutte le righe di codice del main del .exe nella procedura Main della dll (N.B. è una procedura che ci siamo creati noi, non c'entra nulla con le caratteristiche basi di una dll quindi l'avremmo potuta chiamare anche Pippo): tutto qui. A questo punto potremmo cambiare l'estensione da .dll a .cpl ed avremmo un applet che va in esecuzione nella stessa maniera in cui andava in esecuzione il .exe originale. Tuttavia, anche alla luce degli approfondimenti che dovremo fare in seguito, ci creeremo un eseguibile semplice semplici che carica la dll nel suo spazio di memoria:
program Runner;
uses
Windows;
type
TMainProc = procedure(); stdcall;
var
hModule: Cardinal;
MainProc: TMainProc;
begin
hModule := LoadLibrary('RegEnum.dll');
MainProc := TMainProc(GetProcAddress(hModule, 'MainProc'));
MainProc();
FreeLibrary(hModule);
end.
exe_convertito_dll.7z
|