Как использовать форму из 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.
|
|