Code: |
unit UDLLTest;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
{ Вот типы, которые требуются для работы нашей функции bob }
TBOB = function(Fire: Word; Dances: Boolean): Boolean; stdcall;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject); var
BOB: TBOB; hDLLInst: THandle; IsAlive, IsDancing: Boolean; Years: Word;
begin
{ Загружаем и получаем дескриптор нашего BLODGE.DLL } hDLLInst := LoadLibrary('BLODGE.DLL'); { Если загрузка не была успешной, генерируем свое исключение } if (hDLLInst <= 0) then raise exception.create('[Неудачный вызов LoadLibrary]'); { Попытаемся получить адрес функции BOB } try @BOB := GetProcAddress(hDLLInst, 'BOB'); if not assigned(BOB) then raise exception.Create('[Неудачный вызов GetProcAddress]'); Years := 25; IsDancing := True; { Теперь мы можем выполнить функцию BOB } IsAlive := BOB(Years, IsDancing); finally { Освобождаем дескриптор DLL } FreeLibrary(hDLLInst); end; end;
end. |
- << Назад
- Вперёд
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!