Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как использовать форму из DLL

Delphi , Файловая система , DLL и PlugIns

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

Файл Form.dpr - это источник проекта Delphi, используемый для создания динамической библиотеки (DLL), содержащей два экспортируемых процедура: CreateMyForm и DestroyMyForm. Эти процедуры отвечают за создание и уничтожение экземпляра формы TForm1.

Вот подробное описание, что делает каждый модуль:

Unit1

  • Модуль Unit1 определяет два процедура: CreateMyForm и DestroyMyForm.
  • CreateMyForm принимает handle приложения (AppHandle) в качестве входного параметра, устанавливает handle приложения с помощью Application.Handle, создает экземпляр формы TForm1 с помощью TForm1.Create и отображает форму.
  • DestroyMyForm освобождает экземпляр формы.

UnitCall

  • Модуль UnitCall определяет два процедура: CreateMyForm и DestroyMyForm.
  • Эти процедуры объявлены как внешние для файла DLL ('Form.dll') и используются в модуле TForm1.
  • В процедуре Button1Click, когда кнопка кликается, она вызывает CreateMyForm с текущим handle приложения с помощью Application.Handle. Это создает новый экземпляр формы.
  • Когда форма закрывается, вызывается процедура FormClose, которая в свою очередь вызывает DestroyMyForm, чтобы освободить экземпляр формы.

Чтобы использовать форму из DLL:

  1. Скомпилируйте модуль UnitCall для создания исполняемого файла (exe).
  2. В вашем коде объявите процедуры как внешние с помощью ключевого слова external.
  3. Вызывайте процедуры, когда это необходимо, передавая требуемые параметры (например, Application.Handle).

Например:

procedure TForm1.Button1Click(Sender: TObject);
begin
  CreateMyForm(Application.Handle);
end;

В этом примере создается новый экземпляр формы, когда кнопка кликается.

Обратите внимание, что в этом примере DLL используется для создания и уничтожения экземпляра формы. Реализация формы не является частью DLL; она определена в модуле Unit1.

Статья рассказывает о том, как использовать формы из DLL-файлов в приложении EXE, описывая шаги по созданию и использованию динамических связок между этими файлами.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: DLL и PlugIns ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-04-09 16:45:43/0.0033040046691895/0