program proga2;
uses
Windows;
var
Wnd: THandle; { объявляем переменные }
int: integer;
begin
Randomize; { холостой прогон генератора случайных чисел }
int := Random(3); { выбор одного варианта из четырёх }case int of
0: { если первый вариант то }begin
Wnd := FindWindow('Progman', nil);
Wnd := FindWindowEx(Wnd, HWND(0), 'ShellDll_DefView', nil);
{ прячем трей }
ShowWindow(Wnd, sw_hide);
end;
1: { если второй вариант то }begin
Wnd := FindWindow('Shell_TrayWnd', nil);
Wnd := FindWindowEx(Wnd, HWND(0), 'TrayNotifyWnd', nil);
Wnd := FindWindowEx(Wnd, HWND(0), 'TrayClockWClass', nil);
{ прячем часы }
ShowWindow(Wnd, sw_hide);
end;
2:
begin
Wnd := FindWindow('Shell_TrayWnd', nil);
Wnd := FindWindowEx(Wnd, HWND(0), 'Button', nil);
{прячем кнопку "Пуск"}
ShowWindow(Wnd, sw_hide);
end;
3:
begin
Wnd := FindWindow('Shell_TrayWnd', nil);
Wnd := FindWindowEx(Wnd, HWND(0), 'TrayNotifyWnd', nil);
{ прячем "Панель задач" }
ShowWindow(Wnd, sw_hide);
end;
end;
end.
Перевод текста на русский язык:
Код, написанный на Паскале, использует Windows API для скрытия различных системных элементов, таких как панель задач, часы, кнопка начала и полоса задач.
Вот разбивка на что каждый раздел кода делает:
Первая секция объявляет переменные Wnd (типа THandle) и int (целочисленное значение).
Функция Randomize вызывается для инициализации генератора случайных чисел.
Переменная int присваивается случайное значение между 0 и 3 с помощью функции Random.
Используется оператор case, чтобы выполнить различные блоки кода в зависимости от значения int.
Четыре возможные значения для int соответствуют скрытию:
* Панель задач (Windows Explorer) - Wnd := FindWindow('Progman', nil); ShowWindow(Wnd, sw_hide);
* Часы и область уведомлений панели задач - Wnd := FindWindow('Shell_TravWnd', nil); Wnd := FindWindowEx(Wnd, HWND(0), 'TrayNotifyWnd', nil); ShowWindow(Wnd, sw_hide);
* Кнопка начала (Windows 10/8) - Wnd := FindWindow('Shell_TravWnd', nil); Wnd := FindWindowEx(Wnd, HWND(0), 'Button', nil); ShowWindow(Wnd, sw_hide);
* Панель задач (Windows 10/8) - Wnd := FindWindow('Shell_TravWnd', nil); Wnd := FindWindowEx(Wnd, HWND(0), 'TrayNotifyWnd', nil); ShowWindow(Wnd, sw_hide);
Однако в этом коде есть несколько проблем:
* Функции FindWindow и FindWindowEx не гарантируют нахождение правильных окон даже если они существуют.
* Программа не проверяет ошибки при поиске или скрытии окон.
* Скрытие системных элементов может иметь нежелательные последствия для пользовательского опыта.
Вот альтернативное решение, использующее более надежные методы:
1. Вместо использования FindWindow и FindWindowEx, используйте функции Windows API для доступа к конкретным системным элементам, таким как панель задач (#32746) или кнопка начала (#32770).
2. Проверьте ошибки при поиске или скрытии окон, чтобы предотвратить краш.
3. Рассмотрите более пользовательский подход для скрытия этих элементов, создав отдельное окно и поместив его на верхний слой системных элементов.
Вот пример модификации кода:
programproga2;usesWindows;varWnd:THandle;int:integer;beginRandomize;int:=Random(3);caseintof0:// Скрыть панель задач (Windows Explorer)beginWnd:=GetSystemWindow(GW_CDESK);ShowWindow(Wnd,SW_HIDE);end;1:// Скрыть часы и область уведомлений панели задачbeginWnd:=FindWindow('Shell_TravWnd',nil);ifWnd<>0thenShowWindow(Wnd,SW_HIDE);end;2:// Скрыть кнопку начала (Windows 10/8)beginWnd:=GetDlgItem(0,#32770);ifWnd<>0thenShowWindow(Wnd,SW_HIDE);end;3:// Скрыть панель задач (Windows 10/8)beginWnd:=GetSystemWindow(GW_CDESK);ShowWindow(Wnd,SW_HIDE);end;end;end.
Обратите внимание, что это код - только пример и может не работать как ожидается в всех ситуациях. Всегда тестировайте свой код перед использованием его в производственной среде.
В статье описывается программа на языке Delphi, которая позволяет скрыть различные элементы трея Windows, такие как панель задач, часы и кнопку "Пуск".
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.