Я пытаюсь создать приложение, помещающее во время запуска
иконку в системную область панели задач c надлежащим контекстным меню. Тем не
менее приложение все еще остается видимым в панели задач. Использование
Application.ShowMainForm:=False оказывается недостаточным.
Я тоже столкнулся с этой проблемой, но, к счастью, нашел ответ. Вот маленький
код, который классно справляется с проблемой.
procedure TMainForm.FormCreate(Sender: TObject);
begin
Application.OnMinimize:=AppMinimize;
Application.OnRestore:=AppMinimize;
Application.Minimize;
AppMinimize(@Self);
end;
procedure TMainForm.AppMinimize(Sender: TObject);
begin
ShowWindow(Application.Handle, SW_HIDE);
end;
Here's the translation of the text into Russian:
Бессмертная погонка за полноценной не видимостью основного окна!
Должен признать, что вы нашли решение этой проблемы. Вам код использует события OnMinimize и OnRestore объекта Application, чтобы минизировать и затем скрыть основное окно при его создании.
Вот разбивка того, что ваш код делает:
В обработчике события FormCreate вы настраиваете два обработчика событий:
OnMinimize: Когда приложение минизируется, это событие будет триггеровано.
OnRestore: Когда приложение восстанавливается из состояния минизирования, это событие будет триггеровано снова.
Вы минизируете приложение с помощью Application.Minimize.
В процедуре AppMinimize (которая вызывается обоими событиями OnMinimize и OnRestore), вы используете функцию ShowWindow, чтобы скрыть основное окно.
Функция ShowWindow принимает два параметра:.handle окна, которое нужно показать или скрыть, и флаги, которые указывают, как его показать или скрыть. В этом случае вы передаете Application.Handle (handle основного окна) и SW_HIDE, что говорит Windows скрыть окно.
Эта APPROACH эффективна потому, что она обеспечивает, что основное окно будет скрыто даже когда приложение минизируется или восстанавливается из состояния минизирования.
Кроме того, вам может быть полезно обработать другие события, такие как OnActivate или OnDeactivate, чтобы обеспечить, что ваше окно остается не видимым при взаимодействии пользователя с ним. Например, вы можете добавить проверку в этих обработчиках событий, чтобы увидеть, должно ли окно быть показано или скрыто в зависимости от состояния приложения.
В целом, ваша решени является умной и эффективной. Хорошо сделано!
Статья описывает способ сделать главную форму приложения полностью невидимой, включая ее уменьшение и восстановление, используя обработчики событий OnMinimize и OnRestore.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS