unit TaskBar;
interfaceuses Windows, ShellAPI;
const// Дублируем описания из ShellAPI, чтобы не писать его в Uses// везде, где мы используем этот модуль
NIF_TIP = ShellAPI.NIF_TIP;
NIF_ICON = ShellAPI.NIF_ICON;
function TaskBarAddIcon(
hWindow: THandle; // окно, создавшее значок
ID: Cardinal; // идентификатор значка
ICON: hIcon; // иконка
CallbackMessage: Cardinal; // сообщение, которое будет посылаться окну
Tip: PChar // ToolTip
): Boolean;
function TaskBarModifyIcon(
hWindow: THandle;
ID: Cardinal;
Flags: Cardinal;
ICON: hIcon;
Tip: PChar): Boolean;
function TaskBarDeleteIcon(
hWindow: THandle;
ID: Integer): Boolean;
implementationfunction TaskBarAddIcon(
hWindow: THandle;
ID: Cardinal;
ICON: hIcon;
CallbackMessage: Cardinal;
Tip: PChar): Boolean;
var
NID: TNotifyIconData;
begin
FillChar(NID, SizeOf(TNotifyIconData), 0);
with NID dobegin
cbSize := SizeOf(TNotifyIconData);
Wnd := hWindow;
uID := ID;
uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
uCallbackMessage := CallbackMessage;
hIcon := Icon;
lstrcpyn(szTip, Tip, SizeOf(szTip));
end;
Result := Shell_NotifyIcon(NIM_ADD, @NID);
end;
function TaskBarModifyIcon(
hWindow: THandle;
ID: Cardinal;
Flags: Cardinal;
ICON: hIcon;
Tip: PChar): Boolean;
var
NID: TNotifyIconData;
begin
FillChar(NID, SizeOf(TNotifyIconData), 0);
with NID dobegin
cbSize := SizeOf(TNotifyIconData);
Wnd := hWindow;
uID := ID;
uFlags := Flags;
hIcon := Icon;
lstrcpyn(szTip, Tip, SizeOf(szTip));
end;
Result := Shell_NotifyIcon(NIM_MODIFY, @NID);
end;
function TaskBarDeleteIcon(
hWindow: THandle;
ID: Integer): Boolean;
var
NID: TNotifyIconData;
begin
FillChar(NID, SizeOf(TNotifyIconData), 0);
with NID dobegin
cbSize := SizeOf(TNotifyIconData);
Wnd := hWindow;
uID := ID;
end;
Result := Shell_NotifyIcon(NIM_DELETE, @NID);
end;
end.
Эта единица Delphi предназначена для работы с панелью задач в Windows, используя модуль ShellAPI для взаимодействия с панелью и позволяя добавлять, изменять и удалять иконки на панели.
Вот разбивка кода:
Единица TaskBar объявлена, содержит три функции: TaskBarAddIcon, TaskBarModifyIcon и TaskBarDeleteIcon.
Директива uses Windows, ShellAPI; импортирует модули Windows и ShellAPI, которые обеспечивают доступ к API Windows и функциональности оболочки.
Секция const определяет некоторые константы из модуля ShellAPI, конкретно NIF_TIP и NIF_ICON, которые используются в функциях.
Три функции:
TaskBarAddIcon: добавляет иконку на панель задач. Она принимает пять параметров:
hWindow: handle окна, создавшего иконку.
ID: идентификатор иконки.
ICON: иконка для добавления.
CallbackMessage: сообщение, отправляемое в окно при клике по иконке.
Tip: указатель на строку, содержащую текст подсказки для иконки.
Функция создает структуру TNotifyIconData и заполняет ее необходимыми данными. Затем она вызывает функцию Shell_NotifyIcon с сообщением NIM_ADD, чтобы добавить иконку на панель задач.
TaskBarModifyIcon: модифицирует существующую иконку на панели задач. Она принимает пять параметров:
hWindow: handle окна, создавшего иконку.
ID: идентификатор иконки.
Flags: флаги, контролирующие, как модифицируется иконка (например, обновление текста подсказки).
ICON: новая иконка для использования.
Tip: указатель на строку, содержащую новый текст подсказки.
Функция создает структуру TNotifyIconData и заполняет ее необходимыми данными. Затем она вызывает функцию Shell_NotifyIcon с сообщением NIM_MODIFY, чтобы модифицировать иконку на панели задач.
TaskBarDeleteIcon: удаляет иконку из панели задач. Она принимает два параметра:
hWindow: handle окна, создавшего иконку.
ID: идентификатор иконки.
Функция создает структуру TNotifyIconData и заполняет ее необходимыми данными. Затем она вызывает функцию Shell_NotifyIcon с сообщением NIM_DELETE, чтобы удалить иконку из панели задач.
В целом, эта единица обеспечивает набор функций для работы с иконками на панели задач Windows. Вы можете использовать эти функции для добавления, модификации и удаления иконок, а также для получения информации о существующих иконках.
Модуль TaskBar для работы с системной строкой задач в Windows, предоставляющий функции добавления, изменения и удаления иконок из строки задач.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.