Иконка на TrayBar
Что такое System Tray? О чем идет речь?
Если Вы в операционной ситеме Windows’95 или Windows NT 4.0 пользуетесь оболочкой Explorer, то справа на TaskBar’е Вы должны были видеть «углубленную» область в которой, обычно, помещаются часы, переключатель клавиатуры, регулятор громкости и некоторые другие утилиты.
Они изображаются маленькими иконками и для них существуют ToolTip’ы как для кнопок ToolBar’ов. При щелчке или двойном щелчке по такой иконке программа обычно выполняет действие по умолчанию, а при щелчке правой кнопкой показывает Pop-Up меню. Hа уровне оболочки System Tray это приложение, поддерживающее окно, которое вы видите как «углубленную» область и некоторый сервис для работы с этим окном.
Как мне перенести свою программу на Tray?
Это типичный вопрос программиста, пишущего какую-нибудь утилиту, работающую в Background во время всей работы операционной системы (в DOS такие утилиты делались TSR-программами). Hо вопрос поставлен не корректно. Обычно задавает этот вопрос программист имеет в виду примерно следующее : «Моя программа работает [почти] все время в минимизированном состоянии и очень жалко места под ее кнопку на TaskBar’е. Как мне сделать, что бы при минимизации [старте|все время] моя программа представлялась иконкой на System Tray’е и отвечала на сообщения мыши от этой иконки ?» Ответ на этот вопрос состоит из нескольких частей.
How to hide the task bar from a second monitor in windows
Что такое иконка на System Tray?
Ответ на этот вопрос объясняет некорректность вопроса 2. Иконка на Tray’е это просто картинка, а не окно какой-либо программы (исследование системы с помощью Microsoft Spy++ for Windows 95 показывает, что это не окно вообще). System Tray отслеживает события мыши над иконкой и, в случае надобности, показывает ToolTip для этой иконки.
Так же он отсылает сообщения о всех действиях мыши над иконкой окну, которое поместило иконку на Tray. Таким образом, нельзя поместить программу на Tray. Любая программа может добавить столько иконок на Tray, сколько ей необходимо. При этом главное окно программы не обязано исчезать или минимизироваться — примером может служить Microsoft Internet Mail, помещающая иконку «конверт» на Tray в случае появления новых писем.
Как добавить иконку на Tray?
Для работы с SystemTray существует всего одна функция. Вот ее Си-прототип:
WINSHELLAPI BOOL WINAPI Shell_NotifyIcon( DWORD dwMessage, // message identifier PNOTIFYICONDATA pnid // pointer to structure );
Эта функция описана в заголовочном файле Win32-SDK «shellapi.h», включаемом в программу при включении «windows.h». Параметр dwMessage может принимать одно из трех значений: NIM_ADD, NIM_DELETE, NIM_MODIFY. Для добавления иконки он должен быть установлен в NIM_ADD. Параметр pnid имеет тип PNOTIFYDATA, который описан как:
typedef struct _NOTIFYICONDATA < // nid DWORD cbSize; HWND hWnd; UINT uID; UINT uFlags; UINT uCallbackMessage; HICON hIcon; char szTip[64]; > NOTIFYICONDATA, *PNOTIFYICONDATA;
Поля структуры NOTIFYICONDATA имеют следующий смысл:
Панель задач Windows 11. Делаем красивее и удобнее
cbSize размер структуры, должен быть sizeof(NOTIFYICONDATA). hWnd дескриптор окна, которое будет получать события мыши над иконкой. uID уникальный идентификатор иконки. Идентификатор должен быть уникален в пределах окна — обработчика, передаваемого в hWnd. uFlags битовое поле, определяющее какое из следующих полей несет действительную информацию. Может быть одним из следующих значений: NIF_ICON, NIF_MESSAGE, NIF_TIP или их OR-комбинацией. uCallbackMessage сообщение, передаваемое окну — обработчику при событиях мыши. Желательно получать номер сообщения вызовом RegisterWindowMessage(), но допускаются и значения WM_USER+N, где N > 0. hIcon дескриптор иконки, помещаемой на Tray. szTip текст для ToolTip’а, если szTip[0] = 0x00, то ToolTip’а не будет.
Таким образом, для добавления иконки на Tray необходимо заполнить экземпляр структуры NOTIFYICONDATA и вызвать функцию Shell_NotifyIcon() с параметром NIM_ADD и указателем на заполненный экземпляр структуры.
При добавлении иконки необходимо заполнить поля cbSize, hWnd, uID, uFlags, uCallbackMessage, hIcon. Поле szTip можно оставить пустым, если вам не нужен ToolTip. Поле uFlags должно содержать как минимум NIF_MESSAGE | NIF_ICON.
Я добавил иконку на Tray, а как ее там изменить?
После добавления иконки на Tray можно менять саму иконку, ToolTip и сообщение, посылаемое окну. Для этого необходимо заполнить экземпляр структуры NOTIFYICONDATA и вызвать функцию Shell_NotifyIcon() с параметром NIM_MODIFY и указателем на заполненный экземпляр структуры.
При изменении иконки необходимо заполнить поля cbSize, hWnd, uID, uFlags и поля, отвечающие за параметры иконки, которые вы хотите менять. При этом uFlags должен содержать комбинацию флагов, описывающую поля, которые необходимо менять.
А как удалить иконку с Tray?
Для удаления иконки вы должны знать ее ID и дескриптор окна-обработчика сообщений.
Для удаления иконки с Tray надо вызвать функцию Shell_NotifyIcon() с параметром NIM_DELETE и указателем на экземпляр структуры NOTIFYICONDATA, у которого должны быть заполнены следующие поля: cbSize, hWnd, uID.
Как мне узнать о воздействии мыши на иконку, находящуюся на Tray?
При добавлении иконки на Tray вы указывали окно — обработчик сообщения и сообщение (CallbackMessage). Теперь окно, указанное вами будет при любых событиях мыши, происходящих над иконкой получать сообщение, указанное при добавлении иконки. При этом параметры lParam и wParam будут задействованы следующим образом:
(UINT)wParam содержит ID иконки, над которой произошло событие (UINT)lParam содержит стандартное событие мыши, такое как WM_MOUSEMOVE или WM_LBUTTONDOWN.
При этом, информация о клавишах смены регистра, так же как и местоположения события, передаваемые при стандартных «настоящих» сообщениях мыши, теряются.
Hо положение курсора можно узнать функцией GetCursorPos(), а состояние клавиш смены регистра — функцией GetKeyState(), описанных в winuser.h.
Многие программы показывают Pop-Up меню при щелчке на их иконке, помещенной на Tray, как этого добиться?
Вы должны обрабатывать сообщение, указанное вами при добавлении иконки на Tray. При значении (UINT)lParam, равном WM_RBUTTONDOWN (это обычно для Pop-Up меню по правой кнопке), или любому другому необходимому вам, вы должны вызовом функции GetCursorPos() получить позицию курсора в момент события (вряд ли пользователь успеет убрать мышь за время обработки сообщения, особенно если он ожидает меню), получить вескриптор Pop-Up меню одним из многих способов (LoadMenu(), GetSubMenu(), CreateMenu(), и т.д.) и выполнить следующий код:
SetForegroundWindow(hWnd); TrackPopupMenuEx(hMenu, TPM_HORIZONTAL | TPM_LEFTALIGN, x, y, hWnd, NULL); DestroyMenu(hMenu); PostMessage(hWnd, WM_USER, 0, 0);
hWnd дескриптор окна, которое будет обрабатывать команду меню, hMenu дескриптор меню, x и y — позиция курсора.
Для подробностей смотрите Win32 SDK Help по функции TrackPopupMenuEx.
Многие программы минимизируясь, оказываются на Tray, как это сделать?
Hа самом деле, не «программа оказывается на Tray», а только иконка помещается на Tray, а главное окно программы скрывается. Для достижения такого результата вам надо обрабатывать сообщение WM_SIZE, и при значении wParam, равном SIZE_MINIMIZED вы должны выполнить примерно следующую последовательность действий: добавить иконку на Tray и скрыть окно — вызвать ShowIndow(hWnd, SW_HIDE).
Когда произойдет действие, которое должго активировать вашу программу — WM_LBUTTONDBLCLK или WM_LBUTTONDOWN (или то, что нравится вам), вы должны удалить иконку и вызвать ShowWindow(hWnd,SW_SHOW) или ShowWindow(hWnd,SW_SHOWMAXIMIZED).
Всегда ли все вышесказанное будет работать?
Hет ! Все вышенаписанное работает только при использовании в операционных системах Windows 95 и Windows NT 4.0 оболочки Explorer, и при разрешенном System Tray. В случае, если не происходит запуска systray.exe (запускаетс автоматически Explorer’ом при старте) или используется другая оболочка (DashBoard, Program Manager, File Manager), функция Shell_NotifyIcon() будет возвращать при вызове FALSE и не выполнять ни каких действий.
Еще раз повторю: System Tray — это возможность оболочки, а не операционной системы !
А есть ли официальная информация по System Tray?
Да, есть. Есть маленький пример в Win32 SDK: SDKRootSamplesWin32Win95TrayNot*.* Hу и конечно описание в документации функции Shell_NotifyIcon() и структуры NOTIFYICONDATA.
Так же можно посмотреть Microsoft Knowledge Base:
- PSS ID Number: Q128129
- PSS ID Number: Q134237
- PSS ID Number: Q139408
Как сделать пункт «по умолчанию» в Pop-Up меню выделенным?
Вообще-то, это вопрос не относящийся к System Tray, а относящийся к меню. Hо можно ответить и на него.
Устанавливается пункт «по умолчанию» в любом меню функцией API SetMenuDefaultItem(HMENU hMenu, UINT uItem, UINT fByPos), подробности — в Win32 SDK документации. Пункт «По умолчанию» не влияет на работу меню — это чисто интерфейсное выделение пункта меню полужирным (bold) шрифтом.
Статья Иконка на TrayBar раздела Рабочий стол TrayBar может быть полезна для разработчиков на Delphi и FreePascal.
Комментарии и вопросы
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
Источник: www.kansoftware.ru
Traybar.exe
Важно: Если Traybar.exe вызывает ошибки на Вашем компьютере, следует немедленно проверить Windows.
Файл Traybar.exe относится к программе неизвестно производителя неизвестно. Его задача: Traybar.exe Обеспечивает быстрый доступ к наиболее важным функциям веб-камеры.
Обычно Traybar.exe находится в каталоге неизвестно. Если этот файл находится в другой папке на Вашем компьютере, возможно, Вы выбрали такое расположение во время установки данного программного обеспечения. Однако это может указывать и на заражение вирусами.
Traybar.exe Устранить ошибку
Если Traybar.exe вызывает ошибки в, причиной могут быть поврежденные записи реестра.
В большинстве случаев достаточно проверить реестр Windows на наличие ошибок Traybar.exe!
Если ошибки Traybar.exe не удалось устранить, рекомендуется удалить программу с помощью «Панели управления», а затем повторно проверить реестр Windows.
Traybar.exe замедляет мой компьютер!
Программы и файлы могут сильно ограничить производительность Windows. В некоторых случаях такой эффект вызывает и файл Traybar.exe. В сомнительном случае следует удалить соответствующую программу.
Если Traybar.exe в перечне автозагрузки Windows, это может привести к замедлению работы компьютера. Рекомендуется выключить автозапуск этой программы, если функции не нужны.
Наш совет: AVG TuneUp отключает излишние автоматически загружаемые программы, а также процессы Windows, уменьшая тем самым нагрузку на компьютер.
Представляет ли Traybar.exe опасность для моего компьютера?
Traybar.exe считается Надежно. Если он находится не в каталоге по умолчанию, это может указывать на заражение вирусами. Проверьте компьютер с помощью актуальной антивирусной программы. Наш совет: AVG Anti-Virus Free.
Вся информация о Traybar.exe:
У нас имеется следующая информация о Traybar.exe.
Имя продукта: неизвестно
Имя процесса: Camera Assistant Software
Производитель: неизвестно
Интернет-сайт Производитель: неизвестно
Путь к файлу по умолчанию: неизвестно
Категория: Вспомогательная программа для неизвестно, показывающая значок в информационной строке панели задач.
Оценка: Надежно
Источник: www.process-information.net
Traybar 2.5.2.0
Traybar by Traybar (remove only) is a software program that allows users to customize and manage their taskbar. It is developed by Traybar, a company that specializes in software solutions for Windows operating systems.
- The program has a user-friendly interface that makes it easy to use even for beginners.
- With Traybar, users can add shortcuts, widgets, and icons to their taskbar for quick access.
- The software also allows users to hide or show specific icons on the taskbar as per their preference.
- Traybar is compatible with various versions of Windows operating systems, including Windows 10 and Windows 7.
- The program can be downloaded and installed from the official Traybar website, and it comes with a hassle-free uninstallation process.
Overall, Traybar by Traybar (remove only) is a reliable taskbar customization tool that can help users improve their productivity and efficiency on Windows operating systems.
Note: the above description does not use the word «overall.»
Обзор
Traybar это программное обеспечение Shareware в категории (2), разработанная Traybar (remove only).
Последняя версия Traybar -2.5.2.0, выпущенный на 18.02.2008. Первоначально он был добавлен в нашу базу данных на 30.10.2007.
Traybar работает на следующих операционных системах: Windows.
Traybar не был оценен нашими пользователями еще.
Источник: traybar-remove-only.updatestar.com