Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.13;
Скачать: CL | DM;

Вниз

Проблемы с формой из DLL   Найти похожие ветки 

 
AlexanderSK ©   (2003-02-05 17:27) [0]

Вот DLL:
procedure Init(H: THandle); stdcall;
begin
Application.Handle := H;
Application.CreateForm(TTestForm, TestForm);
TestForm.Show;
end;

procedure DeInit; stdcall;
begin
TestForm.Free;
end;

А вот использующая ее программа:

var
Dll: THandle;

procedure TMainForm.Button1Click(Sender: TObject);
var
P: procedure(H: THandle); stdcall;
begin
Dll := LoadLibrary("dll\test.dll");
@P := GetProcAddress(Dll, "Init");
P(Application.Handle);
end;

procedure TMainForm.Button2Click(Sender: TObject);
var
P: procedure; stdcall;
begin
@P := GetProcAddress(Dll, "DeInit");
P;
FreeLibrary(Dll);
end;

Проблема в следующем все замечательно рабюотает пока нет строчки FreeLibrary(Dll)! Как только я пытаюсь выгрузить Dll у меня с экрана проподает Основная форма приложения! Причем приложение продолжает нормально работать и вызов - ShowWindow(MainForm.Handle, SW_SHOWDEFAULT) все приводит в норму! В чем дело? Как с этим можно бороться?

Всем заранее большое спасибо!


 
gsu ©   (2003-02-05 17:30) [1]

А где проверки на наличие ... ?


 
AlexanderSK ©   (2003-02-05 17:31) [2]

Наличие чего?


 
AlexanderSK ©   (2003-02-05 18:13) [3]

Неужето никто с этим не сталкивался раньше?
Подскажите - что я делаю не так?


 
gsu ©   (2003-02-05 18:17) [4]

возможно же, что библиотека не загрузилась или функции нет или ... ?


 
AlexanderSK ©   (2003-02-05 18:24) [5]

все это есть! выброшено здесь для эконимии места! все прекрасно работает! Но как только вызывается FreeLibrary(Dll) с экрана исчезает основная форма приложения! И это при том что приложение продолжает работать!!!

ЧТО ДЕЛАТЬ?


 
Skier ©   (2003-02-05 18:26) [6]

procedure Init(H: THandle); stdcall;
begin
Application.Handle := H;
TestForm := TTestForm.Create(Application);
TestForm.Show;
end;


 
AlexsanderSK   (2003-02-05 18:31) [7]

Тот же эффект! После FreeLibrary(Dll) основная форма исчезает с экрана!!!


 
AlexsanderSK   (2003-02-05 18:35) [8]

П все было просто!!!!

procedure DeInit; stdcall;
begin
TestForm.Free;
Application.Handle := 0;{!!!!!}
end;





Страницы: 1 вся ветка

Текущий архив: 2003.02.13;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
3-38121
Big_Rom
2003-01-28 07:20
2003.02.13
oracle и тип нумбер


14-38495
k-sergey
2003-01-27 13:44
2003.02.13
Помогите!


8-38401
Alex
2002-10-31 21:29
2003.02.13
Изображение в TImage


14-38509
mic_2000
2003-01-28 12:21
2003.02.13
Подскажите как проще отчет сделать и каким репортом


14-38447
JibSkeart
2003-01-27 12:31
2003.02.13
Тормозит рограммулька которая пользуется ADO на Win2000