Ваша процедура в dLL показывает немодальную форму, в вашем приложении-получателе у вас нет кода для цикла сообщений, если вы посмотрите на файл DPR, созданный Delphi для приложения формы VCL, вы увидите код похож на этот:
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
этого код инициализирует приложение, создает форму, а затем запускает цикл обработки сообщений, и это сообщение итерации и процессы цикла принятых сообщений, пока приложение не будет прекращено.
В вашем коде вы только что создали часть создания формы, а не остальную часть. Вы можете использовать приведенный выше код в своем собственном коде и заменить Application.CreateForm своим собственным кодом создания формы.
Другой вариант - показать вашу форму внутри DLL как модальную форму. В этом случае ваша форма будет оставаться на экране до тех пор, пока не будет закрыта:
MyForm.ShowModal;
Также, пожалуйста, обратите внимание, что в текущем объекте кода приложения в вашей DLL не обязательно относится к объекту Application в приложении вызывающего абонента, если вы отправляете Application.Handle из приложения-получателя в DLL.
Это лучше, что вы изменить процедуру DLL в код, как это:
procedure StartApp;
begin
with TMyForm.Create(nil) do
try
ShowModal;
finally
Free;
end;
end;
С уважением
спасибо, я только что изменил процедуру StartApp, я изменил Show to ShowModal и в основной программе (dpr) я просто поместил StartApp, и он отлично работает. BTW это нормально, если я удалил приложение. * Процедуры, он отлично работает без них. –