Плагин win2tray.spf
Файл: win2tray.spf
Автор: Nicholas Nemtsev
Описание: Дополнительные слова для работы с иконками в системном
трее: они позволяют сворачивать в трей конкретное окно или все окна, подпадающие
под указанную маску; узнавать, свернуто ли окно в трей; добавлять произвольные
иконки в системный трей (а также модифицировать и удалять их); наглядно иллюстрировать
с помощью иконок в системном трее доступность/недоступность интернет сайтов
и т. д.
Новые слова:
WIN-TO-TRAY: "win_pattern"
Помещает окно, подпадающее под указанную маску в системный трей.
Перед WIN-TO-TRAY можно указывать модификатор ALL: тогда в
трей будут убраны все окна, подпадающие под маску.
Примеры:
\ убираем в трей окно ИЕ WIN-TO-TRAY: "*Internet Explorer" \ убираем в трей все открытые окна ИЕ ALL WIN-TO-TRAY: "*Internet Explorer"
Существует вариант этого слова с постфиксным расположением параметров:
S" win_pattern" WIN-TO-TRAY
ADD-TI ( a u hicon --
id )
С помощью этого постфиксного слова вы можете добавить в системный трей произвольную
иконку и указать текст, который должен появляться при наведении курсора мыши
на эту иконку.
Аргументами к слову ADD-TI служат: строка, которая будет появляться в подсказке при наведении указателя мыши на иконку в трее и т. н. icon handle, т. е., собственно, сама иконка, которая должна появиться в трее. Чтобы создать icon handle вы можете "подгрузить" иконку из файла:
S" iconname.ico" LoadIcon
или воспользоваться одной из многочисленных констант Windows:
32512 0 LoadIconA
Вот числовые значения нескольких иконок-констант Windows, которые вы можете использовать в своих целях:
IDI_APPLICATION | 32512 | |
IDI_ERROR | 32513 | |
IDI_QUESTION | 32514 | |
IDI_WARNING | 32515 | |
IDI_ASTERISK | 32516 |
Слово ADD-TI возвращает ID созданной иконки, используя который вы в дальнейшем сможете удалить или изменить ее (см. DEL-TI, MODIFY-TI)
Пример:
#( test_long_proc NoActive VARIABLE icon_id Action: \ создаем иконку в трее (IDI_WARNING) S" nnCron: long process started" 32515 0 LoadIconA ADD-TI \ сохраняем ID иконки в переменную icon_id ! \ ... working \ удаляем иконку из трея icon_id @ DEL-TI )#
См. также примечание.
Это постфиксное слово позволяет удалять созданную предварительно иконку из системного трея. В качестве аргумента для слова DEL-TI используется ID иконки, получаемый при ее создании.
Пример:
#( test_icon \ создаем иконку в системном трее \ (подгружаем иконку из указанного файла) NoActive VARIABLE my_icon_id Action: S" New Icon" S" ico\my_icon.ico" LoadIcon ADD-TI my_icon_id ! \ ... working \ удаляем иконку из системного трея my_icon_id @ DEL-TI )#
Примечание: удалять иконку из
трея имеет смысл в той же задаче, в которой она была создана: добавленная иконка
существует, пока жив
поток, который её создал. Если задача, которая создала иконку, завершилась,
то иконка становится своеобразным фантомом, который исчезнет при проведении
курсора мыши над системным треем. Впрочем, добавить иконку в трей можно и в
главном потоке (из nncron.ini),
Тогда ее можно будет удалять из любой задачи.
Это постфиксное слово используется для изменения уже существующей иконки в системном трее или для смены текстовой строки, которая появляется при наведении курсора мыши на эту иконку.
Аргументами к слову MODIFY-TI служат: строка, которая будет появляться в подсказке при наведении указателя мыши на иконку в трее, icon handle, и ID иконки.
Пример:
#( test_tray_icons NoActive VARIABLE tray_icon_id Action: \ создаем иконку в трее (IDI_APPLICATION) S" nnCron: task started" 32512 0 LoadIconA ADD-TI \ сохраняем ID созданной иконки tray_icon_id ! \ ... выполняем работу \ ... меняем иконку в трее (IDI_WARNING) S" nnCron: task continued" 32515 0 LoadIconA tray_icon_id @ MODIFY-TI \ ... выполняем работу \ удаляем иконку из трея tray_icon_id @ DEL-TI )#
Это слово добавляет в системный трей иконку, которая наглядно отображает - доступен ли сейчас указанный вами интернет-сайт или компьютер в локальной сети. Иконка будет меняться в зависимости от доступности () или недоступности () указанного сайта. Сайт считается доступным, если он пингуется. Удерживая курсор мыши над иконкой, можно вывести подсказку с именем сайта. Иконка доступности/недоступности сайта будет автоматически удалена из системного трея при выходе из nnCron. Для принудительного удаления иконки из трея используйте слово DEL-HOST-ICONS.
Пример:
#( test_add-host WatchLogon: "*" Action: S" strauss" ADD-HOST S" www.nncron.ru" ADD-HOST )#
Это слово удаляет из системного трея все иконки доступности/недоступности сайтов, добавленные с помощью слова ADD-HOST.
Пример:
#( test_del-host-icons WatchLogoff: "*" Action: DEL-HOST-ICONS )#
Позволяет узнать - свернуто ли указанное окно в системный трей.
Слово IN-TRAY? принимает в качестве аргумента window
handle нужного окна и возвращает флаг: TRUE (-1)
если окно свернуто в трей и FALSE (0) в противном случае.
Пример:
#( test_in_tray NoActive Action: \ запускаем Notepad START-APP: notepad.exe PAUSE: 1000 \ получаем window handle Notepad WIN-EXIST: "*Notepad" IF \ проверяем: свернуто ли окно Notepad в трей WIN-HWND IN-TRAY? IF MSG: "Notepad is minimized to tray" ELSE MSG: "Notepad is not minimized to tray" THEN \ сворачиваем окно Notepad в трей WIN-TO-TRAY: "*Notepad" PAUSE: 1000 \ еще раз проверяем: свернуто ли окно Notepad в трей WIN-HWND IN-TRAY? IF MSG: "Notepad is minimized to tray" ELSE MSG: "Notepad is not minimized to tray" THEN THEN )#
Список window handle окон, которые были свернуты в трей. Работа со списками подробно рассмотрена в разделе "Неотложная помощь по Форту".