| Как использовать форму из DLL 
 
 |  | - Чем пользователь похож на обезьяну? - Поведением. Он жмет на все, что жмется, дергает все, что дергается и крутит все, что крутится.
 - Чем пользователь отличается от обезьяны?
 - Интеллектом. У обезьяны хватает ума не воспроизводить ту последовательность нажатий и дерганий, которую которая приводит к краху системы.
 | 
 
 
Это файл Form.dpr, из которого получается DLL:
 | 
 
library Form;
uses
  Classes,
  Unit1 in 'Unit1.pas' {Form1};
exports
  CreateMyForm,
  DestroyMyForm;
end.
 | 
 
 
Это его Unit1:
 | 
 
unit Unit1;
interface
// раздел uses и определение класса Form1
  procedure CreateMyForm(AppHandle: THandle); stdcall;
  procedure DestroyMyForm; stdcall;
implementation
{$R *.DFM}
procedure CreateMyForm(AppHandle: THandle);
begin
  Application.Handle := AppHandle;
  Form1 := TForm1.Create(Application);
  Form1.Show
end;
procedure DestroyMyForm;
begin
  Form1.Free;
end;
end.
 | 
 
 
Это UnitCall вызывающего EXE-шника:
 | 
 
unit
  UnitCall;
interface
// раздел uses и определение класса Form1
  procedure CreateMyForm(AppHandle: THandle); stdcall; external 'Form.dll';
  procedure DestroyMyForm; stdcall; external 'Form.dll';
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
  CreateMyForm(Application.Handle);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  DestroyMyForm;
end;
end.
 | 
 
 |