function ShowTrayClock(bValue: Boolean) : Boolean;
var
TrayWnd, TrayNWnd, ClockWnd: HWND;
begin
TrayWnd := FindWindow('Shell_TrayWnd', nil);
TrayNWnd := FindWindowEx(TrayWnd, 0, 'TrayNotifyWnd', nil);
ClockWnd := FindWindowEx(TrayNWnd, 0, 'TrayClockWClass', nil);
Result := IsWindow(ClockWnd);
if Result thenbegin
ShowWindow(ClockWnd, Ord(bValue));
PostMessage(ClockWnd, WM_PAINT, 0, 0);
end;
end;
// Example to hide they clock: procedure TForm1.Button1Click(Sender: TObject);
begin
ShowTrayClock(Boolean(0));
end;
Here's a translation of the provided text into Russian:
Код, написанный на Delphi, используется для скрытия или отображения часов в системном трее.
Краткое описание функций:
Функция ShowTrayClock принимает булевое значение как аргумент, которое определяет, нужно ли отобразить или скрыть часы.
Она использует функции Windows API FindWindow, FindWindowEx и IsWindow для поиска окна системного трея, окна области уведомлений и окна часов соответственно.
Если окно часов найдено, она отображает или скрывает окно в зависимости от значения булевого аргумента с помощью функции ShowWindow.
Функция PostMessage используется для отправки сообщения WM_ PAINT окну часов для его перерисовки после отображения или скрытия.
Процедура Button1Click в классе формы вызывает ShowTrayClock с значением False, чтобы скрыть часы системного трея при нажатии кнопки.
Некоторые улучшения, которые можно сделать:
Обработка ошибок: код не проверяет ошибки, которые могут возникнуть при поиске окон. Хорошо бы добавить обработку ошибок с помощью функций Windows API, таких как GetLastError или возвращаемое значение функции IsWindow.
Читаемость кода: можно улучшить именование переменных и форматирование для более читаемого кода.
Альтернативное решение: вместо ручного поиска окна часов можно использовать функцию Windows API SH_ShowClock, которая может отобразить или скрыть часы системного трея.
Пример использования функции SH_ShowClock:
function ShowTrayClock(bValue: Boolean): Boolean;
begin
Result := SH_ShowClock(bValue);
end;
// Пример скрытия часов:
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowTrayClock(False);
end;
В этом коде функция SH_ShowClock используется вместо ручного поиска окна часов. Это делает код более компактным и понятным.
В статье описывается функция, позволяющая спрятать или отобразить часы в трее Windows, а также пример использования этой функции для скрытия часов на форме Delphi.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.