Faq system tray


Faq system tray

Как попасть в System Tray? Приходит время, и начинающему Windows-программисту наскучивает открывать и закрывать окно с лозунгом «Hello, World». Его взгляд рассеянно блуждает по «рабочему столу» (не по тому, на котором стоит монитор, а по тому, что создан бессмертной Microsoft) и останавливается на правом нижнем его углу. Та часть панели задач, что привлекла его внимание, именуется «system tray» и содержит значки, которые магическим образом взаимодействуют с программами, работа которых «на первый взгляд как будто не видна» (эти программы нельзя «вызвать» с помощью комбинации [Alt]+[Tab]).

Вышеупомянутого программиста начинает мучить вопрос: а чем его творение хуже Clock, dr.Web, AVP и прочих (посмотрите на свой system tray и продолжите список). Почему бы не растолкать корифеев и не занять свое место под солнцем (точнее, под курсором «мыши») в этом уютном уголке.
В этой статье приводятся сведения, достаточные для того, чтобы любой программист, знакомый с принципами разработки приложений под Windows 9x, мог разместить значок в system tray и управлять им.
Как уже было сказано, system tray — это часть панели задач, которая включает в себя еще меню кнопки «Пуск», кнопки выбора приложения и всплывающее меню. Официальное название system tray — область состояния (status area). Сюда приложения могут размещать значки, которые информируют пользователя об их состоянии или о возникновении событий.
Размещая в этой области значок принтера, приложение сообщает о начале процесса печати. Если курсор «мыши» замрет над каким-нибудь значком, всплывает информационная строка: «паук» dr.Web сообщает о количестве проверенных/инфицированных файлов, «часы» показывают дату, «системный монитор» — количество свободных ресурсов.
Кроме того, значки system tray позволяют организовать обратную связь с пользователем для приложений, окна которых по ряду причин нежелательно размещать на «рабочем столе». Например, чтобы вызвать окно настройки громкости, нужно дважды щелкнуть «мышью» по значку «громкоговорителя». В этом смысле значки выполняют функцию окна приложения: информируют пользователя и принимают сообщения от «мыши».
Для работы со значками в области состояния предназначена всего одна функция WIN32 API — Shell_NotifyIcon. Она описана следующим образом:
WINSHELLAPI BOOL WINAPI Shell_NotifyIcon(
DWORD dwMessage,
PNOTIFYICONDATA pnid);

При вызове параметр dwMessage должен содержать одно из следующих значений:
— NIM_ADD — добавить значок в область состояния,
— NIM_DEL — удалить значок из области состояния,
— NIM_MODIFY — изменить значок в области состояния.
Параметр pnid указывает на структуру типа NOTIFYICONDATA, значения полей которой зависят от параметра dwMessage.
Функция Shell_NotifyIcon возвращает ненулевое значение, если операция прошла успешно, и ноль в случае ошибки.
Рассмотрим подробнее структуру NOTIFYICONDATA. Она описана следующим образом:
typedef struct _NOTIFYICONDATA <
DWORD cbSize;
HWND hWnd;
UINT uID;
UINT uFlags;
UINT uCallbackMessage;
HICON hIcon;
char szTip[64];
> NOTIFYICONDATA, *PNOTIFYICONDATA;
и ее поля имеют следующий смысл:
— cbSize — размер структуры NOTIFYICONDATA,
— hWnd — манипулятор окна, которое будет получать сообщения от значка в области состояния;
— uID — идентификатор значка. Это значение передается приложению в качестве первого параметра (WPARAM) сообщения от значка;
— uFlags — набор флагов, которые определяют, какие поля структуры заданы корректно. Могут использоваться следующие значения или их комбинации с помощью логического «ИЛИ»: NIF_ICON — поле hIcon корректно, NIF_MESSAGE — поле uCallbackMessage корректно, NIF_TIP — поле szTip корректно;
— uCallbackMessage — идентификатор сообщения, посылаемого окну hWnd при возникновении события «мыши» над значком в области состояния. Можно использовать значения WM_USER+N, где N — неотрицательное число;
— hIcon — манипулятор иконки, которую нужно разместить (изменить, удалить) в system tray;
— szTip — ASCIIZ-строка, которая будет использоваться в качестве «всплывающего» текста, когда указатель «мыши» остановится над значком. Если текст отсутствует, первый байт строки должен быть нулевым.
Перед вызовом функции Shell_NotifyIcon нужно подготовить экземпляр структуры NOTIFYICONDATA. Поля cbSize, hWnd и uID нужно заполнять всегда, остальные — по мере необходимости. В соответствии с заполнением полей uCallbackMessage, hIcon и szTip формируется поле флагов uFlags.
Чтобы добавить значок в область состояния, нужно вызвать функцию Shell_NotifyIcon, передав ей в качестве параметра dwMessage значение NIM_ADD, а в качестве pnid — указатель на инициализированный экземпляр структуры NOTIFYICONDATA. Если все выполнено правильно, функция вернет ненулевое значение, а в system tray появится новая иконка. Если планируется, что окно должно принимать сообщения от значка, следует обратить внимание, чтобы поле hWnd перед вызовом Shell_NotifyIcon было инициализировано значением манипулятора реально существующего окна. В противном случае значок будет исчезать из области состояния, как только над ним остановится указатель «мыши». Если было инициализировано поле uCallbackMessage, система будет посылать окну hWnd сообщения о событиях «мыши» над значком. При этом параметр сообщения WPARAM будет содержать идентификатор значка uID, а параметр LPARAM — тип сообщения.
Приложение, разместившее значок в system tray, может в любой момент изменить иконку или всплывающую подсказку. Для этого нужно внести изменения в соответствующие поля структуры NOTIFYICONDATA, поправить значение uFlags (значения cbSize, hWnd и uId изменяться не должны!) и вызвать функцию Shell_NotifyIcon со значением NIM_MODIFY в качестве параметра dwMessage.
Для удаления значка из system tray достаточно правильно заполнить поля cbSize, hWnd, u >Приведенные сведения позволяют программисту жонглировать значками в system tray как только он пожелает. Дополнительную информацию и примеры использования функции Shell_NotifyIcon и обработки сообщений «мыши» можно найти в «Win32 Programmer’s Reference», что поставляется в виде help-файла «Win32 online help» в составе Borland C++ 5.0.
Но если Вы программируете не на Ассемблере, а, к примеру, на C++, можно построить элегантный класс, который позволит еще больше упростить процесс работы со значками в области состояния.
Итак, за работу. Назовем наш класс SystemTrayIcon. Он должен содержать сведения о значке в области состояния и методы работы с ним. То есть он должен знать, как создать, модифицировать и удалить значок. Кроме того, в нем должна быть информация о том, размещен ли значок в system tray или еще нет.
Вся информация о значке содержится в структуре NOTIFYICONDATA, поэтому ее экземпляр можно поместить в класс, а чтобы защитить его от несанкционированного использования — ограничим доступ модификатором private. Туда же поместим логическую переменную fIsPlaced, которая будет принимать значение TRUE, если иконка размещена в system tray, и FALSE — в противном случае. Наш класс будет содержать следующие методы: конструктор (ну как же без него?), FAdd (размещает значок в system tray), FChangeIcon (изменяет иконку), FChangeTip (изменяет всплывающую подсказку), FDelete (удаляет значок из system tray) и деструктор. Запишем то, о чем сказано, в терминах C++:

Что же у нас получилось? Для размещения значка в system tray нужно прежде всего создать объект класса SystemTrayIcon. Конструктор инициализирует класс и присваивает члену fIsPlaced значение FALSE, что соответствует отсутствию значка в system tray. Для добавления значка в область состояния нужно воспользоваться методом FAdd, передав ему в качестве параметров все необходимые сведения о значке (эти параметры соответствуют аналогичным параметрам функции Shell_NotifyIcon, поэтому здесь не расписываются). Этот метод, как и методы FChangeIcon, FChangeTip, FDelete, возвращает TRUE в случае удачи и FALSE — в противном случае. Реализация методов выглядит следующим образом:

Чтобы изменить иконку, просто обращаемся к методу FChangeIcon с манипулятором новой иконки в качестве параметра. Все необходимые значения в классе уже сохранены. Аналогичным образом с помощью метода FChangeTip изменяется всплывающая подсказка. Удалить значок из system tray можно с помощью метода FDelete или просто уничтожив объект класса SystemTrayIcon (тогда деструктор сделает это автоматически).
Преимущества объектно-ориентированного подхода налицо. Ничто не мешает создать несколько объектов класса SystemTrayIcon и разместить в области состояния несколько значков. При дальнейшей работе с объектами нет необходимости задумываться над тем, какие поля инициализировать для изменения параметров значка или его удаления, нужно просто воспользоваться готовым методом. Удаление значков из system tray может выполняться автоматически при уничтожении соответствующего объекта.
Теперь можно подвести итоги. В статье рассмотрен способ размещения, удаления и работы со значками в system tray. Приведено описание функции Shell_NotifyIcon WIN32 API и объяснены ее параметры. В качестве примера построен С++ класс SystemTrayIcon, позволяющий упростить операции со значками в области состояния, и приведены реализации его методов. Надеюсь, что эта статья поможет кому-нибудь реализовать свои идеи в профессиональном воплощении и вдохновит на новые подвиги в области программирования под Windows. А ведь начиналось все с «Hello, World»!

Игорь Орещенков

Илон Маск рекомендует:  Шаблон сайта фрукты HTML, CSS, JavaScripts, 1 страница

System Tray что это и можно ли удалить из автозагрузки?

System Tray — область уведомлений. Находиться обычно справа внизу на панели задач — там где часы. Предназначен для уведомления пользователя о состоянии некоторых функций системы или стороннего ПО (нпр. состояния подключения к сети) и/или быстрого доступа к этим функциям (нпр. регулировка звука).

Убрать сам System Tray невозможно — это часть системы. Можно убрать/выключить отображение значков. Слышал, что через реестр убрать можно практически все, включая часы. Но сам не пробовал. Какие-то отдельные значки можно убрать в настройках соответствующих функций в настройках системы или стороннего ПО — при этом значки не выводятся в Tray вообще. Или в настройках самого System Tray — при этом отключается только отображения значка на экране.

How do I put a Java app in the system tray?

I have a little control-panel, just a little application that I made. I would like to minimize/put the control-panel up/down with the systemicons, together with battery life, date, networks etc.

Anyone that can give me a clue, link to a tutorial or something to read?

3 Answers 3

As of Java 6, this is supported in the SystemTray and TrayIcon classes. SystemTray has a pretty extensive example in its Javadocs:

You could also check out this article, or this tech tip.

It’s very simple

Set appropriate path for image and then run the program. t.y. :)

This is the code you can use to access and customize the system tray:

Not the answer you’re looking for? Browse other questions tagged java system-tray minimize or ask your own question.

Linked

Hot Network Questions

Subscribe to RSS

To subscribe to this RSS feed, copy and paste this URL into your RSS reader.

site design / logo © 2020 Stack Exchange Inc; user contributions licensed under cc by-sa 4.0 with attribution required. rev 2020.11.11.35402

Системный трей

Трей – это область уведомлений на панели задач, в нижнем правом углу экрана. В нем находятся системные значки (часы, громкость и т. д.) и иконки программ.

Что такое трей

Системный трей – это часть панели задач Windows. Находится в правом нижнем углу экрана.

Здесь размещены системные значки и иконки программ. Некоторые из них могут скрываться под кнопкой со стрелкой.

К системным относятся:

  • Часы
  • Звук
  • Сеть
  • Электропитание
  • Раскладка клавиатуры
  • Системные события

Программные иконки показывают программы компьютера, которые запущены в данный момент.


Официально эта часть панели задач называется область уведомлений (Notification Area). Системный трей – это ее неофициальное название, хотя оно иногда используется [1] в документации Microsoft.

Системные значки

Часы . Здесь показывается время и дата, которую компьютер считает актуальной. Для открытия полной информации (время с секундами, день недели, календарь) просто нажмите на этот значок.

Звук . Данная иконка позволяет регулировать общую громкость на компьютере или звуки отдельных программ.

Для изменения громкости щелкните по иконке и перемесить ползунок с помощью зажатой левой кнопки мыши или колеса прокрутки.

Сеть . Показывает подключение к Интернету. Если доступ к сети беспроводной (wi-fi), иконка будет такой , а если другое подключение (через кабель, 3G модем), то такой .

При нажатии на значок откроется информация по текущему подключению, а также доступные точки wi-fi. Здесь можно быстро отключиться/подключиться, а также перейти в настройки.

Электропитание . Этот значок будет только у ноутбуков. Когда зарядное устройство подключено, он выглядит так . Когда отключено, так — . Белый цвет в данном случае отображает состояние заряда батареи.

При наведении курсора на иконку всплывает сообщение о заряде, а нажав на нее можно выбрать режим расхода энергии и получить доступ к более продвинутым настройкам.

Раскладка клавиатуры . Отображает установленный в данный момент язык ввода. Его можно поменять вручную или при помощи комбинации клавиш (обычно Shift + Alt или Shift + Ctrl).

Для удаления алфавита или добавления нового щелкните по раскладке клавиатуры правой кнопкой мыши и выберите «Параметры…». В Windows 10: левой кнопкой мыши → Настройки языка.

Системные события . Иконки, которые уведомляют пользователя о событиях Windows, указывают состояние операции и дают к ней быстрый доступ. Это такие значки как:

  • – безопасное извлечение устройства;
  • – очередь печати;
  • – установка нового оборудования;
  • и другие.

Настроить функцию, за которую отвечает тот или иной значок, можно щелкнув по нему правой кнопкой мыши и выбрав соответствующий пункт меню.

Иконки программ

В области уведомлений вместе с системными значками находятся иконки программ. Обычно это программы, которые работают в фоновом режиме.

Любую из них можно вызвать из трея, настроить, отключить.

Каждая такая программа активна, а это значит, она забирает часть оперативной памяти. Это допустимо, если приложение часто используется или необходимо для безопасности, корректной работы системы и устройств. Например, антивирус, мессенджеры (скайп, вайбер).

Но часто в трее находятся программы, которые используются редко или не используются вообще. Помимо того, что они занимают место на панели задач, так еще и забирают оперативную память. Из-за этого слабые компьютеры работают медленнее, чем могли бы.

Как убрать программу из трея

Есть три варианта очистки трея:

  1. Скрытие значка . Программа будет по-прежнему работать в фоновом режиме, но иконки в области уведомлений не будет.
  2. Выход из программы . Работа программы завершится. Но если ее запуск прописан в автозагрузке, то при следующем включении компьютера она снова начнет работать в фоне.
  3. Удаление из автозагрузки . Программа перестанет автоматически запускаться при включении компьютера. При этом она по-прежнему останется в системе, и ее в любой момент можно будет вызвать.

Скрытие значка

Для скрытия достаточно перетащить иконку в отдел скрытых значков (под стрелку). Для этого схватиться за иконку левой кнопкой мыши, подвести к стрелке и отпустить в нужном месте окна.

Или можно скрыть иконку через свойства: правой кнопкой мыши по панели задач → Свойства (Параметры) → Настроить.

При скрытии значка программа продолжит работать в фоновом режиме.

Выход из программы

Для выхода из программы щелкаем по ее значку правой кнопкой мыши и выбираем соответствующий пункт меню. Он может называться Выход, Закрыть, Отключить, Exit, Close и т. п.

Программа закроется, но только на текущий сеанс работы. Если она находится в автозагрузке, то при следующем включении компьютера снова будет работать в фоне.

Удаление из автозагрузки

Автозагрузка – это функция системы, которая управляет автоматическим запуском программ при загрузке Windows.

Как убрать программу из автозагрузки:


1 . В строке поиска вводим msconfig и открываем найденный файл.

2 . Переходим во вкладку «Автозагрузка» и отключаем программы, которые нужно удалить из автозапуска. Применяем изменения и перезагружаем компьютер.

После удаления программы из автозагрузки она перестанет автоматически запускаться вместе с включением компьютера.

system tray

Англо-русский толковый словарь терминов и сокращений по ВТ, Интернету и программированию. . 1998-2007 .

Смотреть что такое «system tray» в других словарях:

system tray — n the place where the clock and some ↑icons (=small pictures that are used to start a particular operation) are shown on a computer screen … Dictionary of contemporary English

System tray — Область уведомлений в Windows NT Область уведомлений (англ. notification area) или системный трей (англ. system tray, от англ. tray «поднос, поддон») элемент панели инструментов среды рабочего стола («панель задач» в Windows), используемый для… … Википедия

System Tray — Das unter GNOME so genannte „Benachrichtigungsfeld“ zeigt alle Programme, die es unterstützen, zum Beispiel neben der Uhr an Die Taskbar Notification Area (TNA), das Benachrichtigungsfeld, der System Tray (kurz auch Systray oder einfach Tray) –… … Deutsch Wikipedia

Илон Маск рекомендует:  Что такое код imagefilledellipse

System tray — Barre des tâches En informatique, le terme barre des tâches désigne la barre du bureau de l interface graphique du système d exploitation Microsoft Windows qui permet de lancer des programmes et de les surveiller. Cette barre située généralement… … Wikipédia en Français

system tray — sistemos juostelė statusas T sritis informatika apibrėžtis Juostelė su mažomis modemo, spausdintuvo, kalbos ir kitomis ↑piktogramomis. Būna ekrano apačioje, ↑užduočių juostos dešinėje pusėje, paprastai šalia laikrodžio. Iliustraciją žr. priede.… … Enciklopedinis kompiuterijos žodynas

system tray — n. (in Windows operating systems) location on the taskbar in which the clock and other user installed utilities res >English contemporary dictionary

Tray — engl. [trei] (dt. Servierbrett, Ablage, Tablett) steht für: Tray (Umverpackung), eine Umverpackung für Lebensmittelverpackungen Tray (Leergut), ein System in der Leergutrücknahme System Tray, siehe Taskbar Notification Area Datenträger Halter,… … Deutsch Wikipedia

tray — [treı] n ↑glass, ↑bow tie, ↑tray [: Old English; Origin: trig, treg] 1.) a flat piece of plastic, metal, or wood, with raised edges, used for carrying things such as plates, food etc ▪ The waiter brought drinks on a tray. 2.) a flat open… … Dictionary of contemporary English

Tray — Область уведомлений в Windows NT Область уведомлений (англ. notification area) или системный трей (англ. system tray, от англ. tray «поднос, поддон») элемент панели инструментов среды рабочего стола («панель задач» в Windows), используемый для… … Википедия

Tray icon — Barre des tâches En informatique, le terme barre des tâches désigne la barre du bureau de l interface graphique du système d exploitation Microsoft Windows qui permet de lancer des programmes et de les surveiller. Cette barre située généralement… … Wikipédia en Français

Tray and Play — Games for Windows игровая платформа и маркетинговая кампания 2005 году, и которая была пересмотрена в 2006 году. Игры для платформы должны отвечать стандартам сертификации, подобно современным игровым консолям. Цель кампании сделать видеоигры на… … Википедия

Размещение значка приложения в System Tray

Часто программисту приходится сталкиваться с задачей написания приложения, работающего в фоновом режиме и не нуждающегося в месте на Панели задач. Если вы посмотрите на правый нижний угол рабочего стола Windows, то наверняка найдете там приложения, для которых эта проблема решена: часы, переключатель раскладок клавиатуры, регулятор громкости и т. п. Ясно, что, как бы вы не увеличивали и не уменьшали формы своего приложения, попасть туда обычным путем не удастся. Способ для этого предоставляет Shell API.
Те картинки, которые находятся на System Tray — это действительно просто картинки, а не свернутые окна. Они управляются и располагаются панелью System Tray. Она же берет на себя еще две функции: показ подсказки для каждого из значков и оповещение приложения, создавшего значок, обо всех перемещениях мыши над ним.
Весь API System Tray состоит из 1 (одной) функции:

function Shell_NotifyIcon(dwMessage: DWORD;
IpData: PNotifylconData): BOOL; PNotifylconData = TNotifylconData; TNotifylconData = record
cbSize: DWORD;
Wnd: HWND;
uID: UINT;
uFlags: UINT;
uCallbackMessage: UINT;
hlcon: HICON;
szTip: array [0..63] of AnsiChar;
end ;

Параметр dwMessage определяет одну из операций: NIM_ADD означает добавление значка в область, NIM_DELETE — удаление, NIM_MODIFY — изменение.
Ход операции зависит от того, какие поля структуры TNotifyiconData будут заполнены.
Обязательным для заполнения является поле cbsize — там содержится размер структуры. Поле wnd должно содержать дескриптор окна, которое будет оповещаться о событиях, связанных со значком. Идентификатор сообщения Windows, которое вы хотите получать от системы о перемещениях мыши над значком, запишите в поле uCallbackMessage. Если вы хотите, чтобы при этих перемещениях над вашим значком показывалась подсказка, то задайте ее текст в поле szTip. В поле UID задается номер значка — каждое приложение может поместить на System Tray сколько угодно значков. Дальнейшие операции вы будете производить, задавая этот номер. Дескриптор помещаемого значка должен быть задан в поле hIcon. Здесь вы можете задать значок, связанный с вашим приложением, или загрузить свой — из ресурсов.
Примечание
Изменить главный значок приложения можно в диалоговом окне Project/ Options на странице Application. Он будет доступен через свойство Application.Icon. Тут же можно отредактировать и строку для подсказки — свойство Application.Title.
Наконец, в поле uFlags вы должны сообщить системе, что именно вы от нее хотите, или, другими словами, какие из полей hicon, uCaiibackMessage и szTip вы на самом деле заполнили. В этом поле предусмотрена комбинация трех флагов: NIF_ICON, NIF_MESSAGE и NIF_TIP. Вы можете заполнить, скажем, поле szTip, но если вы при этом не установили флаг NIF_TIP, созданный вами значок не будет иметь строки с подсказкой.
Два приведенных ниже метода иллюстрируют сказанное. Первый из них создает значок на System Tray, а второй — уничтожает его.

const WM_MYTRAYNOTIFY = WMJJSER + 123;
procedure TForml.CreateTraylcon(n:Integer);
var nidata : TNotifyiconData;
begin
with nidata do
begin
cbSize := SizeOfWnd := Self.Handle;
u >uFiags := NIF_ICON or NIF_MESSAGE or NIFJTIP;
uCallBackMessage := WM_MYTRAYNOTIFY;
hicon := Application.Icon.Handle;
szTip := ‘THis is Traylcon Example’;
end ;
Shell_NotifyIcon(NIM_ADD, @nidata);
end ;
procedure TForml.DeleteTraylcon(n:Integer);
var nidata : TNotifylconData; begin
with nidata do
begin
cbSize := SizeOf(TNotifylconData);
Wnd := Self.Handle; u >end ;
Shell_NotifyIcon(NIM_DELETE, @nidata);
end ;

Примечание:
He забывайте уничтожать созданные вами значки на System Tray. Это не делается автоматически даже при закрытии приложения. Значок будет удален только после перезагрузки системы.
Внешний вид значка, помещенного нами на System Tray, ничем не отличается от значков других приложений (рис. 31.1).
[]
Рис. 31.1. Над значком, помещенным на панель System Tray, видна строка подсказки
Сообщение, задаваемое в поле uCallbackMessage, по сути дела является единственной ниточкой, связывающей вас со значком после его создания. Оно объединяет в себе несколько сообщений. Когда к вам пришло такое сообщение (в примере, рассмотренном выше, оно имеет идентификатор WM_MYTRAYNOTIFY), поля в переданной в обработчик структуре типа TMessage распределены так. Параметр wParam содержит номер значка (тот самый, что задавался в поле uID при его создании), а параметр LParam — идентификатор сообщения от мыши, вроде WM_MOUSEMOVE, WM_LBUTTONDOWN и т. п. К сожалению, остальная информация из этих сообщений теряется. Координаты мыши в момент события придется узнать, вызвав функцию API GetCursorPos:

procedure TForml.WMICON( var msg: TMessage);
var P : TPoint; begin case msg.LParam of
WM_LBUTTONDOWN:
begin
GetCursorPos(p);
SetForegroundWindow(Application.MainForm.Handle); PopupMenul.Popup(P.X, P.Y);
end ;
WM_LBUTTONUP :
end ;
end ;

Обратите внимание, что при показе всплывающего меню недостаточно просто вызвать метод Popup. При этом нужно вынести главную форму приложения на передний план, в противном случае она не получит сообщений от меню.
Теперь решим еще две задачи. Во-первых, как сделать, чтобы приложение минимизировалось не на Панель задач (TaskBar), а на System Tray? И более того — как сразу запустить его в минимизированном виде, а показывать главную форму только по наступлении определенного события (приходу почты, наступлению определенного времени и т. п.).
Ответ на первый вопрос очевиден. Если минимизировать не только окно главной формы приложения (Application.MainForm.Handle), но и окно приложения (Application.Handle), то приложение полностью исчезнет «с экранов радаров». В этот самый момент нужно создать значок на панели System Tray. В его всплывающем меню должен быть пункт, при выборе которого оба окна восстанавливаются, а значок удаляется.
Чтобы приложение запустилось сразу в минимизированном виде и без главной формы, следует к вышесказанному добавить установку свойства Application.showMainForm в значение False. Здесь возникает одна сложность — если главная форма создавалась в невидимом состоянии, ее компоненты будут также созданы невидимыми. Поэтому при первом ее показе установим их свойство visible в значение True. Чтобы не повторять это дважды, установим флаг — глобальную переменную shownonce:

procedure TForml.HideMainForm;
begin
Appiication.showMainForm := False;
ShowWindow(Application.Handle, SW_HIDE);
ShowWindow(Application.MainForm.Handle, SW_HIDE);
end ;
procedure TForml.RestoreMainForm;
var i,j : Integer;
begin
Appiication.showMainForm := True;
ShowWindow(Application.Handle, SW_RESTORE); ShowWindow(Application.MainForm.Handle, SW_RESTORE);
if no t ShownOnce then begin
for I := 0 to Application.MainForm.ComponentCount -1 do if Application.MainForm.Components[I] is TWinControl then with Application.MainForm.Components[I] as TWinControl do if Visible then
begin
ShowWindow(Handle, SW_SHOWDEFAULT);
for J := 0 to ComponentCount -1 do if Components[J] is TWinControl then
ShowWindow((Components[J] as TWinControl).Handle, SW_SHOWDEFAULT);
end ;
ShownOnce := True;
end ;
end ;
procedure TForml.WMSYSCOMMAND( var msg: TMessage);
begin inherited ;
if (Msg.wParam=SC_MINIMIZE) then
begin
HideMainForm; CreateTraylcon(l) ;
end;
end;
procedure TForml.FileOpenltemlClick(Sender: TObject); begin
RestoreMainForm;
DeleteTraylcon(l);
end ;

Теперь у вас в руках полноценный набор средств для работы с панелью System Tray. В заключение необходимо добавить, что все описанное реализуется не в операционной системе, а в оболочке ОС — Проводнике (Explorer). В принципе, и Windows NT 4/2000, и Windows 95/98 допускают замену оболочки ОС на другие, например DashBoard или LightStep. Там функции панели System Tray могут быть не реализованы или реализованы через другие API. Впрочем, случаи замены оболочки достаточно редки.

Илон Маск рекомендует:  Bsearch двоичный поиск в массиве

Как найти программу в системном трее

Команда тех. поддержки на who@whoer.net нередко просит найти значок клиента WhoerVPN в трее. Напомним, что после установки при запуске WhoerVPN значок появляется именно там. В этой статье мы расскажем, что такое системный трей, где он находится и чем может быть полезен.

Системный трей, что это такое и где он находится

Системный трей, он же область уведомлений, – один из элементов панели инструментов. В нем отображаются запущенные, но не используемые постоянно программы, еще говорят, что они запущены в фоновом режиме. Системный трей располагается в правом нижнем углу экрана возле часов.

Чтобы посмотреть, какие программы запущены на данный момент, необходимо нажать на иконку «Отображать скрытые значки». В области уведомлений чаще всего находятся сообщения операционной системы, ярлыки антивирусных программ, программ-скриншотеров, а также Whoer VPN и другие. Системный трей обеспечивает быстрый доступ к приложениям: для того, чтобы открыть окно программы нужно щелкнуть по соответствующему значку левой кнопкой мыши дважды, для дополнительных действий – щелкнуть один раз правой кнопкой мыши.

Для того, чтобы системный трей облегчал жизнь пользователя и не замедлял работу компьютера, необходимо следить за тем, какие значки в нем отображаются. Нередко в системный трей попадают программы без ведома пользователя. Большое количество значков в трее неизбежно приводит к замедлению работы системы в целом, так как каждая запущенная в фоновом режиме программа потребляет определенную часть ресурсов: процессорное время и оперативную память.


Настройка системного трея

Для настройки области уведомлений нажмите на иконку «Отображать скрытые значки» и выберите Настроить… В открывшемся окне настройте отображение значков и нажмите кнопку «ОК». Для настройки системных значков выберите соответствующий пункт в этом же окне. Так вы можете убрать или добавить часы, значок регулировки громкости, сети и другие.

Настройка автозагрузки

Чтобы отключить автозагрузку ненужных программ, воспользуйтесь командной строкой. Нажмите на клавиатуре одновременно клавиши Win и R. В открывшемся окне введите команду msconfig и нажмите «ОК»

В открывшемся окне, выберите закладку «Автозагрузка» и снимите галочки с программ, которые не нужно запускать при старте системы. Данное действие следует выполнять с осторожностью, чтобы не нарушить работу системы. Если вы не знаете что это за программа, уточните у специалистов или найдите ее описание в интернете.

Теперь вы знаете, что такое системный трей или область уведомлений и легко сможете найти значок Whoer VPN в трее, настроить клиент Whoer VPN или подключиться к серверу VPN. Также вы сможете настроить какие значки будут отображаться и какие программы будут загружаться автоматически при запуске операционной системы. Делитесь полезной информацией в социальных сетях.

Переход по пунктам меню в system tray

11.04.2020, 16:31

Как скрыть приложение в системный лоток (System Tray)
Подскажите как скрыть приложение в системный лоток (System Tray) ?

Вывод пиктограмм к пунктам меню
Необходимо вывести пиктограмму для каждого пункта меню, основная проблема заключается в том, что.

Переход по пунктам меню
Здравствуйте, уважаемые программисты. У меня такой вопрос. Имеется меню:
На.

Как убрать меню с экрана после использования System Tray?
Всем доброго времени суток. Проблема в следующем: моя прога вставляет иконку в трей, при нажатии на.

Вывод меню с привязыными к пунктам этого меню материалами
Вывод меню с привязыными к пунктам этого меню материалами. Подскажите пожалуйста нет ли такого.

11.04.2020, 16:31

Работа с областью system tray
Помогите пожалуста решить задачу: написать программу, которая будет добавлять иконку в область.

Windows-служба и System Tray.
Есть работающее приложение, оформленное в виде Windows-службы с аккаунтом LocalSystem. Необходимо.

Как поместить иконку в System Tray?
Мне нужно поместить иконку в System Tray. Каим образом это можно сделать??

Для чего нужен системный трей

Приветствую всех кто читает этот блог и тех кто пришел первый раз. Меня частенько спрашивают мои читатели: «Что такое системный трей, где находится системный трей, как настроить» и многое другое. Поэтому я решил написать подробную статью, чтобы каждый раз не отвечать на один и тот же вопрос.

Если вы посмотрите в правый нижний угол экрана (там, где находятся часы) скорее всего вы обнаружите хорошо знакомые иконки ICQ, Skype, установленный антивирус и значки других программ. Эта зона и называется системным треем или по-другому область уведомлений. Второе название как нельзя лучше, раскрывает предназначение трея – уведомлять, какие программы запущены и работают в фоновом режиме. Также вы наверное замечали, что именно в области трея появляются сообщения: Windows, антивирусов и других программ.

Трей предоставляет возможность кликом левой кнопкой мыши активировать и вывести на экран интерфейсное окно выбранной программы. Клик правой кнопкой приводит к открытию диалогового окна, в котором можно произвести быструю настройку основных функций программы или вообще ее закрыть.

Фактически, по своему предназначению, системный трей можно сравнить с панелью задач. Единственная разница между ними, это способ получить доступ к программе, так как системный трей отображает уже запущенные программы. При обращении к ярлыку программы в панели задач она предварительно запускается.

Путем несложной настройки с помощью специальных программ, можно поместить практически любую программу в трей.

Никогда не наблюдали такую картину в Windows XP – при наведении на область системного трея раскрывается горизонтальная линия различных ярлыков, которая совсем чуть-чуть не доходит до кнопки «Пуск»? А я наблюдал и неоднократно. Может быть и удобно, но чтобы каждый раз искать из кучи приложений, программу, которая вам нужна — не очень. Зачастую там находятся не совсем нужные вещи для пользователей.

Поэтому надо производить настройку системного трея, чтобы все выглядело компактно. Конечно, можно произвести манипуляцию с панелью задач, но тут как говориться, выбирать вам.

Трей в Windows 7 сделан так, что значки располагаются не на панели задач. Выше на скриншоте можете в этом убедиться. Это очень удобно.

Почему так происходит? Ответ на этот вопрос очень прост. Рассмотрим ситуацию с точки зрения пользователя. Вы поместили в системный трей свой любимый iTunes, проигрыватель видео, парочку интернет браузеров, естественно Microsoft Office и т.д. Этот список можно продолжать практически до бесконечности. Для вас это, несомненно, гораздо более удобно, чем сворачивать все окна и пользоваться ярлыками или запускать программы через «Пуск». А теперь рассмотрим эту же ситуацию с точки зрения компьютера.

Как я уже упоминал выше, системный трей область уведомлений, в котором показываются запущенные приложения в фоновом режиме. То есть, при загрузке Windows происходит автоматический запуск программ. Этот процесс называется автозагрузкой. А ведь каждой программе для работы нужны ресурсы. В частности это касается оперативной памяти. И операционная система, подчиняясь вашим настройкам, выделяет ее каждому приложению ровно столько, сколько нужно.

Выделяя необходимый объем памяти программам, которые находятся в автозагрузке, Windows тем самым уменьшает ее доступный объем. В результате, компьютер начинает тормозить. Если такое происходит, не стоит сразу винить творение Microsoft и переустанавливать Windows. Как и любой другой компонент операционки системный трей очень легко настраивается.

Если из системного трея исчез значок для извлечение USB накопителей, тогда читайте: «Пропал значок безопасное извлечение устройства».

Что такое системный трей мы разобрались, теперь осталось эти знания применить на практике. В одной из следующих статей, расскажу как убирать значки из системного трея штатными средствами Windows.

Faq system tray

Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются.
4. Используйте теги [ code=cpp ] . текст программы. [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Старайтесь формулировать свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной и более давности без веских на то причин.

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL