Hallo liebe DelphiPraxis!
Bin heute beim Surfen auf
dieses Problemchen gestoßen.
Und weil ich etwas Zeit hatte und mich das irgendwie nicht in Ruhe gelassen hat, hab ich mich eben hingesetzt und mal selbst was ausprobiert:
Delphi-Quellcode:
program DllTest;
uses
Windows,
SysUtils,
Dialogs,
Classes;
procedure Testy; export;
begin
ShowMessage('Success!');
end;
exports Testy;
type
TProc=Procedure of Object;
var
Lib:THandle;
Proc:TProc;
begin
Lib:=LoadLibrary(PChar(ParamStr(0)));
if Lib=0 then
ShowMessage('Nicht geladen!')
else
begin
@Proc:=GetProcAddress(Lib,'Testy');
Proc;
FreeLibrary(Lib);
end;
end.
So. Und jetzt meine Frage: Warum funktioniert denn das? Ist da jetzt irgendwo ein Hacken? Habe ich irgendwelche Einschränkungen (z.B. auf Win7 o.ä.)?
Anmerkungen:
Delphi-Version: 3
TestSystem: Windows XP
P.S. Es geht mir bei diesem Beitrag weniger um den praktischen Nutzen, vielmehr um die Problemstellung an sich. (Im verlinkten Artikel haben die schließlich ein Problem damit. Evtl. habe ich auch den Artikel nicht richtig verstanden?!?)
P.P.S. Bin mir nicht sicher, ob es evtl. nicht unters Offtopic gehört...
Gruß,
Brighty
Do you have the email of god??? --- I have to tell him that I'm happy to be born!