Windows
Приведенный пример прячет и показывает кнопку "Пуск", а также разрешает и запрещает ее.
- Подробности
- Родительская категория: 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)
Используем функцию нахождения окна FindWindow, указывая ей в качестве параметров сначала название класса окна, затем его заголовок. Если окно будет найдено, функция выдаст его дескриптор.
- Подробности
- Родительская категория: 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)
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)
В этой статье я хотел бы описать полезную функцию не документированную GetTaskmanWindow. Функция GetTaskmanWindow возвращает дескриптор
окно, которое владеет кнопками панели задач. Вот цитата о панели задач из Microsoft MSDN: "Программа Microsoft® для Windows® интерфейс, включающий приложение
панель называется панелью задач. Панель задач может использоваться для выполнения таких задач, как переключение между открытыми
Windows и запуск новых приложений..." и "панель задач содержит меню Пуск, кнопки панели задач, контекстное меню и панель состояния...". К сожалению, Win32 API не содержит документированных
функция, которая может быть использована для доступа к задач, поэтому мы должны снова использовать недокументированный способ.
- Подробности
- Родительская категория: Taskbar, кнопка Пуск, Системное меню
- Категория: Панель задач (Taskbar)
Этот код вернет программы, связанные с каждым расширением.
Очевидно, вы можете изменить его для поиска конкретного расширения.
- Подробности
- Родительская категория: Windows
- Категория: Ярлыки, файловые ассоциации, расширения
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)
Не хуже M$ получается! У них свои типы файлов, и у нас будут свои! Всё, что для этого нужно - точно выполнять последовательность действий и научиться копировать в буфер, чтобы не писать все те коды, что будут тут изложены :))
Сначала, естественно, объявляем в uses модуль Registry.
- Подробности
- Родительская категория: Windows
- Категория: Ярлыки, файловые ассоциации, расширения
Для вывода информации мы будет использовать компонент TStringGrid с закладки Additional.
Сначала вам нужно будет после
Code: |
var Form1: TForm1; |
- Подробности
- Родительская категория: Taskbar, кнопка Пуск, Системное меню
- Категория: Панель задач (Taskbar)
Code: |
Uses Registry; {©Drkb v.3 ®Vit (Vitaly Nevzorov) - Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.}
procedure RegisterFileType(FileType,FileTypeName, Description,ExecCommand:string); begin if (FileType='') or (FileTypeName='') or (ExecCommand='') then exit; if FileType[1]<>'.' then FileType:='.'+FileType; if Description='' then Description:=FileTypeName; with Treginifile.create do try rootkey := hkey_classes_root; writestring(FileType,'',FileTypeName); writestring(FileTypeName,'',Description); writestring(FileTypeName+'\shell\open\command','',ExecCommand+' "%1"'); finally free; end; end;
procedure TForm1.Button1Click(Sender: TObject); begin RegisterFileType('txt','TxtFile', 'Plain text','notepad.exe'); end; |
- Подробности
- Родительская категория: Windows
- Категория: Ярлыки, файловые ассоциации, расширения
Страница 38 из 42