1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| Uses LibLoader;
var
{ on vas recupéré GetTickCount dans Kernel32.dll }
LibKernel32 : TLibraryLoader;
DynGetTickCount : function : DWORD; stdcall;
{ ici on vas provoquer volontairement une erreur }
LibUnknown : TLibraryLoader;
DynUnknown : function : DWORD; cdecl;
procedure TFrmDemo.FormCreate(Sender: TObject);
begin
{ LibKernel32 : ne doit pas provoquer d'erreur }
LibKernel32 := TLibraryLoader.Create(Kernel32);
LibKernel32.OnLibError := LibErrorEvent;
LibKernel32.OnGetProcError := LibGetProcErrorEvent;
LibKernel32.Load;
if LibKernel32.GetProc('GetTickCount', @DynGetTickCount) then
caption := format('%d =? %d',[DynGetTickCount, GetTickCount]);
{ LibUnknown : renvera deux erreur librairie inconnue et procedure inconnue }
LibUnknown := TLibraryLoader.Create('unknown.dll');
LibUnknown.OnLibError := LibErrorEvent;
LibUnknown.OnGetProcError := LibGetProcErrorEvent;
LibUnknown.Load;
if LibUnknown.GetProc('Unknown', @DynUnknown) then
ShowMessage('Incroyable! il existe une fonction Unknown dans Unknown.dll!');
end; |
Partager