Lav et callback.
Lav så programmer kalder funktionen Init(Callback: TCallfunction) i DLL'en. TCallfunction deklæreres:
type
TCallfunction = procedure(Name: String; Params: Array of Variant);
Dvs. fra programmet:
// Funktionshandleren
procedure FunctionHandler(Name: String; Params: Array of Variant);
begin
// Lav et eller andet der kan kalde en funktion og give parametrene videre. Kræver nok en smule Assembler kode hvis det skal virke helt automatisk.
end;
// Når DLL'en initialiseres
...
Init(@FunctionHandler);
...
DLL funktionen Init skal så bare gemme pointeren til FunctionHandler'en og der kan så kaldes FunctionHandler("Hejsa", <EtArraySomErBlevetInitialiseretIForvejen>
;
PS. Alt det der var pseudo kode og ikke testet da jeg ikke har Delphi installeret atm, men håber du forstår ideen bag.
MH.
The-Freak
Livet er for kort til at kede sig.
blog:
http://laslego.frac.dk