Панель задач (Taskbar)
Code: |
uses ShellAPI;
...
function IsTaskbarAutoHideOn : boolean; var ABData : TAppBarData; begin ABData.cbSize := sizeof(ABData); Result :=(SHAppBarMessage(ABM_GETSTATE, ABData) and ABS_AUTOHIDE) > 0; end; |
- Подробности
- Родительская категория: Taskbar, кнопка Пуск, Системное меню
- Категория: Панель задач (Taskbar)
Code: |
//Спрятать procedure TForm1.Button1Click(Sender: TObject); var hTaskBar : THandle; begin hTaskbar := FindWindow('Shell_TrayWnd', Nil); ShowWindow(hTaskBar, SW_HIDE); end;
//Показать procedure TForm1.Button2Click(Sender: TObject); var hTaskBar : THandle; begin hTaskbar := FindWindow('Shell_TrayWnd', Nil); ShowWindow(hTaskBar, SW_SHOWNORMAL); end; |
- Подробности
- Родительская категория: Taskbar, кнопка Пуск, Системное меню
- Категория: Панель задач (Taskbar)
Для вывода информации мы будет использовать компонент TStringGrid с закладки Additional.
Сначала вам нужно будет после
Code: |
var Form1: TForm1; |
- Подробности
- Родительская категория: Taskbar, кнопка Пуск, Системное меню
- Категория: Панель задач (Taskbar)
В этой статье я хотел бы описать полезную функцию не документированную GetTaskmanWindow. Функция GetTaskmanWindow возвращает дескриптор
окно, которое владеет кнопками панели задач. Вот цитата о панели задач из Microsoft MSDN: "Программа Microsoft® для Windows® интерфейс, включающий приложение
панель называется панелью задач. Панель задач может использоваться для выполнения таких задач, как переключение между открытыми
Windows и запуск новых приложений..." и "панель задач содержит меню Пуск, кнопки панели задач, контекстное меню и панель состояния...". К сожалению, Win32 API не содержит документированных
функция, которая может быть использована для доступа к задач, поэтому мы должны снова использовать недокументированный способ.
- Подробности
- Родительская категория: Taskbar, кнопка Пуск, Системное меню
- Категория: Панель задач (Taskbar)
Используем функцию нахождения окна FindWindow, указывая ей в качестве параметров сначала название класса окна, затем его заголовок. Если окно будет найдено, функция выдаст его дескриптор.
- Подробности
- Родительская категория: Taskbar, кнопка Пуск, Системное меню
- Категория: Панель задач (Taskbar)
Code: |
uses.., ShellApi;
var AppBarData: TAppBarData; bAlwaysOnTop: Boolean; {Поверх окон} bAutoHide: boolean; {Авт. убирать с экрана} ClRect: TRect; {Клиентские области} Rect: TRect; Edge: UInt; {Местоположение TaskBar}
procedure DetectTaskBar; begin AppBarData.hWnd := FindWindow('Shell_TrayWnd', nil); AppBarData.cbSize := sizeof(AppBarData); bAlwaysOnTop := (SHAppBarMessage(ABM_GETSTATE, AppBardata) and ABS_ALWAYSONTOP) < > 0; bAutoHide := (SHAppBarMessage(ABM_GETSTATE, AppBardata) and ABS_AUTOHIDE) < > 0; GetClientRect(AppBarData.hWnd, ClRect.rc); GetWindowRect(AppBarData.hwnd, rect); if (Rect.top > 0) then Edge := ABE_BOTTOM else if (Rect.Bottom < Screen.Height) then Edge := ABE_TOP else if Rect.Right < Screen.Width then Edge := ABE_LEFT else Edge := ABE_RIGHT; end; |
- Подробности
- Родительская категория: Taskbar, кнопка Пуск, Системное меню
- Категория: Панель задач (Taskbar)
Code: |
unit TaskBar;
interface
uses 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;
implementation
function TaskBarAddIcon( hWindow: THandle; ID: Cardinal; ICON: hIcon; CallbackMessage: Cardinal; Tip: PChar): Boolean; var NID: TNotifyIconData; begin FillChar(NID, SizeOf(TNotifyIconData), 0); with NID do begin 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 do begin 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 do begin cbSize := SizeOf(TNotifyIconData); Wnd := hWindow; uID := ID; end; Result := Shell_NotifyIcon(NIM_DELETE, @NID); end;
end. |
- Подробности
- Родительская категория: Taskbar, кнопка Пуск, Системное меню
- Категория: Панель задач (Taskbar)