Показать сообщение отдельно
  #3  
Старый 09.05.2017, 18:03
crazyman crazyman вне форума
Новичок
 
Регистрация: 22.04.2012
Сообщения: 99
Репутация: 10
По умолчанию

первая форма
Код:
procedure TFMain.Button1Click(Sender: TObject);
var
hDll : THandle;
begin
hDll := LoadLibrary(PChar(extractFileDir(ParamSTR(0)) + '\' + 'passport.drs'));
@OpenPassport1 := GetProcAddress(hDll,'OpenPassport');
OpenPassport1(Handle);
FreeLibrary(hDll);
end;
вторая форма (точнее библиотека с формой)
Код:
library passport;

{ Important note about DLL memory management: ShareMem must be the
  first unit in your library's USES clause AND your project's (select
  Project-View Source) USES clause if your DLL exports any procedures or
  functions that pass strings as parameters or function results. This
  applies to all strings passed to and from your DLL--even those that
  are nested in records and classes. ShareMem is the interface unit to
  the BORLNDMM.DLL shared memory manager, which must be deployed along
  with your DLL. To avoid using BORLNDMM.DLL, pass string information
  using PChar or ShortString parameters. }

uses
  SysUtils,
  Classes,
  Unit1 in 'Unit1.pas' {FPass};
{$E drs.res}
{$R *.res}
 exports
  OpenPassport;
begin
end.
***************
код из самой формы
procedure OpenPassport(aHandle: THandle); Export; StdCall;
implementation
{$R *.dfm}
procedure OpenPassport(aHandle: THandle);
var
 OldHandle  : THandle;
 begin
   CoInitialize(Nil);
   OldHandle := Application.Handle;
   Application.Handle := aHandle;
   FPass:= TFPass.Create(Application);
  try
     FPass.ShowModal;
  finally
    Application.Handle := OldHandle;
    FPass.Free;
  end;
end;
нужно в библиотеке с формой добавить еще форму, которую можно вызывать по нажатию кнопки например (условно форма в которой содержится информация "about")
Ответить с цитированием