![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как сокрыть кнопку на трее от формы 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 называется...