![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблемы с формой из DLL [D6, Win2k]
AlexanderSK © (2003-02-05 17:27:00)Вот 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) все приводит в норму! В чем дело? Как с этим можно бороться?
Всем заранее большое спасибо!
AlexsanderSK (2003-02-05 18:35:00) [1]П все было просто!!!!
procedure DeInit; stdcall;
begin
TestForm.Free;
Application.Handle := 0;{!!!!!}
end;
AlexsanderSK (2003-02-05 18:31:00) [2]Тот же эффект! После FreeLibrary(Dll) основная форма исчезает с экрана!!!
Skier (2003-02-05 18:26:00) [3]procedure Init(H: THandle); stdcall;
begin
Application.Handle := H;
TestForm := TTestForm.Create(Application);
TestForm.Show;
end;
AlexanderSK (2003-02-05 18:24:00) [4]все это есть! выброшено здесь для эконимии места! все прекрасно работает! Но как только вызывается FreeLibrary(Dll) с экрана исчезает основная форма приложения! И это при том что приложение продолжает работать!!!
ЧТО ДЕЛАТЬ?
gsu (2003-02-05 18:17:00) [5]возможно же, что библиотека не загрузилась или функции нет или ... ?
AlexanderSK (2003-02-05 18:13:00) [6]Неужето никто с этим не сталкивался раньше?
Подскажите - что я делаю не так?
AlexanderSK (2003-02-05 17:31:00) [7]Наличие чего?
gsu (2003-02-05 17:30:00) [8]А где проверки на наличие ... ?