Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как сокрыть кнопку на трее от формы Dll? [D6, NT4, Win2k]


denis555 ©   (2003-03-19 17:21:00) 

приходится делать Dll-ки со своими формами, так вот такой вопрос все подключаемые dll-и с формами создают в трее (это там где Пуск - для продвинутых) свою кнопку, чего совсем не хотелось бы......


denis555   (2003-03-21 17:20:00) [1]

спасибо за разьяснения насчет трея...........
и СПАСИБО за код :), яботает, кстати полезно хандлер Application передать еще и для ProcessMessage а то уж больно все подвисает.........


Сергєєв Володимир   (2003-03-20 08:16:00) [2]

2 Clickmaker ©
Ты хоть бы разжевывал человеку, че ему надо сделать.

denis555
Проблема состоит в том, что у тебя объект Application модуля Forms длл-ки изолирован от объекта Application ехе-шника и поэтому создается новая кнопка на панели задач. Чтобы этого не происходило - надо передать указатель на хендл Application основного ехе-шника в библиотеку.

Пусть у тебя есть длл содающая TForm1 со следующим исходником:

library my_dll;
uses
SysUtils,
Windows,
Forms,
Unit1; {TForm1}

function CreateForm(
HANDLE :THandle):boolean;
var
F:TForm1;
begin
Result := FALSE;
Application.Handle := HANDLE;
try
F := TForm1.Create(Application);
F.ShowModal;
finally
F.Free;
Result := TRUE;
end;
end;

EXPORTS CreateForm;
END;


В основном ехе-шнике вызываешь

function CreateForm(HANDLE :THandle):boolean; external "my_dll.dll";

....................

procedure TFrom2.Button1Click(Sender :TObject);
begin
CreateForm(Application.Handle);
end;


Clickmaker   (2003-03-19 17:56:00) [3]

это там где Пуск - для продвинутых

Трей - это не там, где Пуск, а там, где часы (это для еще более продвинутых)

А насчет собственно вопроса, то если делаешь какие то формы в DLL, то и екзешник и DLL должны быть собраны с одним набором Run-time packages, и при инициализации DLL надо ей подсовывать Application и Screen из екзешника, а при выгрузке - восстанавливать ее родные значения.


ki11er   (2003-03-19 17:52:00) [4]


> в трее (это там где Пуск - для продвинутых)

Да... Продвинутее некуда ;-)
Вообще-то это Task Bar называется...


Наверх

Титульная страница Поиск, карта сайта Написать письмо