У меня есть DLL с упакованной модальной формой
Код:
library dprFormDll2;
uses
SysUtils, Windows,
Classes,
unFormDll2 in 'unFormDll2.pas' {Form1};
{$R *.res}
function ShowForm: Integer; stdcall;
begin
try
Form1 := TForm1.Create(nil);
Form1.ShowModal;
if (Form1.ModalResult = idOk) then
Result := Form1.ListBox1.ItemIndex
else
Result := -1;
finally
FreeAndNil(Form1);
end;
end;
exports ShowForm;
begin
end.
Потом из другого проекта я пытаюсь вызвать эту DLL:
Код:
unit unRunDll2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm2 = class(TForm)
Label1: TLabel;
procedure FormDblClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TShowForm2= function : Integer; stdcall;
var
Form2: TForm2;
ShowForm2: TShowForm2;
LibHandle: THandle;
Res: Integer;
implementation
{$R *.dfm}
procedure TForm2.FormDblClick(Sender: TObject);
begin
// @ShowForm2 := nil;
libHandle := LoadLibrary('E:\Aleksandr_Delphi\Примеры программ\Размещение форм в DLL\dprFormDll2.dll');
@ShowForm2 := GetProcAddress(LibHandle, 'ShowForm');
Res := ShowForm2;
case Res of
0: Label1.Caption := 'Первый вариант';
1: Label1.Caption := 'Второй вариант';
2: Label1.Caption := 'Третий вариант';
else
Label1.Caption := 'Нет варианта';
end;
end;
end.
LoadLibrary возвращает мне дескриптор, но функция GetProcAddress возвращает только "inaccessible value". Подскажите, где у меня проблемы.
