Ховаємо кнопку Пуск, панель завдань, годинник

За допомогою кількох функцій Windows API можна приховати кнопку Пуск, панель завдань або окремі елементи. Я робив це раніше за допомогою Visual Basic 6.0, Delphi, C++, Visual Basic.NET на Windows 98/Me/XP. Спробуємо тепер це зробити за допомогою C# на Windows 7. Практичної цінності даний приклад не має, може тільки заради жарту. Проте приклад може послужити непоганою демонстрацією можливостей, які приховують системні функції Windows.

Трохи теорії. Найчастіше програмісти хочуть отримати доступ до стандартних елементів інтерфейсу робочого столу Windows. Для програмістів-початківців буде цікаво дізнатися, що панель завдань і кнопка Пуск є вікнами (власне звідси і назва операційної системи). Тому все, що нам потрібно, це отримати описувач потрібного вікна, а потім за допомогою відповідних функцій приховати або показати це вікно.

Щоб одержати описувач вікна, потрібно знати ім'я класу.

  • Для панелі завдань це класShell_TrayWnd
  • для кнопки Пуск -Button
  • для області повідомлень -TrayNotifyWnd
  • для області системного годинника -TrayClockWClass

Нам знадобляться всі кілька функцій для такого грандіозного завдання.

Тепер оголосимо кілька змінних кожного елемента.

Попередні приготування готові. Можна приступати до приховання/показу елементів панелі завдань

Панель завдань

Щоб приховати панель завдань, потрібно знайти описувач і приховати вікно за допомогою функції ShowWindow.

Кнопка Пуск

Попередній код ховаємо тільки панель завдань, а кнопка ПУСК при цьому залишається видимою. Хоча раніше в Windows 98/XP кнопка ПУСК була частиною панелі завдань і ховалася разом з нею (якщо ви пам'ятаєте, це дійснобула прямокутна кнопка). Щоб приховати і саму кнопку, доведеться ще раз викликати кілька функцій:

Як бачите, цього разу для приховування кнопки ми використовуємо іншу функцію – SetWindowPos, оскільки ShowWindow тепер не приховує її, як це було раніше. Варто зазначити, що при повторному натисканні кнопка ПУСК не з'являється самостійно на екрані. Необхідно підвести покажчик миші до того місця, де знаходиться ПУСК, і кнопка знову відобразиться. Ймовірно, можна викликати якусь функцію, яка примусово змусила б відмалювати кнопку на екрані, але я не став цим морочитися. Якщо знайдете рішення, то надішліть його мені.

Відповідно, можна ховати лише кнопку ПУСК, не чіпаючи саму панель завдань.

Область повідомлень

Область повідомлень ховається за таким же принципом, як панель завдань.

У попередньому прикладі ми приховували область повідомлень разом з годинником. Щоб приховати тільки годинник, не чіпаючи область повідомлень, потрібно трохи постаратися. Спочатку ми знаходимо описувач області повідомлень, а потім знаходимо його дочірнє вікноTrayClockWClass