- Инна КАЛИНИНА
-
Представьте, сидите Вы
дома за компьютером и занимаетесь
важным делом. А тут вдруг заходит
ближайший родственник и спрашивает,
который час. Вы, будучи человеком
воспитанным и интеллигентным,
отвлекаетесь и под свои последние
"виртуальные вздохи" отвечаете.
Нет, вы не связывались телепатически
с Big Ben'ом и не звонили по 060, а просто
взглянули в правый нижний угол
монитора - как правило, системная
панель (SysTray) находится именно там.
Определять время -
далеко не единственная задача этой
панели, на ней же уютно располагаются
иконки различных приложений, индикатор
языка, регулятор громкости,
планировщик и т. д. Хотя я и не сторонник
"замусоривания" SysTray'а, порой его
очень удобно использовать в "корыстных"
целях. Причина, которая вынудила лично
меня к следующим действиям, - условная
надежность MS Office 2000, в один прекрасный
момент у меня "слетела" панель.
Бежать за дисками настроения не было,
вот и пришлось вспомнить
основополагающий принцип рубрики "Очумелые
ручки".
"Мудрить" будем, естественно, с
помощью VB (Visual Basic), стремительно
набирающего обороты, также нам
понадобятся дополнительные средства,
расположенные на его диске. Выберите из
каталога \Common\Tools\VB\Unsupport\SysTray на
компакте проект SysTray.vbp. В окне
исследователя программы откройте
папку Modules и дважды щелкните на
строке SysTray - модуль откроется в окне
программы.
Если Вы внимательно присмотритесь к
тексту кода в секции Global Declarations (с
англ. "глобальные объявления"),
увидите несколько функций API, среди
которых CallWindowProc, GetWindowLong, Shell_NotifyIcon.
Именно они и отвечают за размещение
значка программы на системной панели.
Чтобы лучше понять код модуля, советую
почитать комментарии к нему.
Когда вы детального ознакомитесь с
файлом, откомпилируйте его. В меню "Файл"
выбираем Make SysTray.ocx и сохраняем его в
каталог C:\Windows\System. Теперь, после
того как мы получили необходимый
элемент ActiveX, непосредственно
приступайте к делу.
Запускаем VB и создаем стандартный тип
проекта Standatd EXE. Свойству Name
формы задаем значение frmMain. Теперь
щелкните правой мышкой на панели
инструментов и выберите из
контекстного меню команду "Компоненты".
Воспользовавшись кнопкой Browse,
найдите SysTray.ocx, затем поместите его
на форму, а Name задайте clsSysTray. Далее с
помощью TrayIcon элемента clsSysTray
заменяем "кулинарную" иконку (по-моему,
тостер) на более подходящую. Благодаря
TrayTip'у можно внести всплывающую
подсказку, саму программу называем "Приложения".
Теперь создадим меню - именно оно и
будет служить средством запуска
приложений. Сама же форма в таком виде,
как мы ее сейчас видим, после
компиляции и запуска программы
отображаться не будет.
Делаем frmMain активной и в меню "Инструменты"
выбираем "Редактор Меню".
Здесь немного отойдем от стандартной
схемы. Во-первых, в поле Caption вводим "Приложения"
в Name - mnuUp. Во-вторых, Next,
стрелочка и по накатанной дорожке
вносим названия всех приложений,
которые Вы планируете запускать
благодаря этой программе. В-третьих, в
Caption вносим "Закрыть", а в Name - mnuClose.
Кроме того, при совпадении первых слов
в именах приложений (Microsoft Word и Microsoft Excel)
не забывайте про Index. Ведь при
указании Name после стандартного "mnu"
плюс Caption главного меню пишется первое
слово из названия подменю.
Затем добавляем следующий фрагмент
кода для активизации, открытия и
закрытия меню программы "Приложения".
Private Sub clsSysTray_MouseDown(Button As Integer, Id As Long)
If Button = 1 Then
PopupMenu mnuUp
End If
End Sub
Private Sub mnuUp_Click()
Load frmMain
End Sub
Private Sub mnuClose_Click()
Unload Me
Set frmMain = Nothing
End Sub
А в процедуру события Load формы
добавляем:
Me.Hide
Простенько, но со вкусом.
Сам процесс (не путайте с подпрограммой)
добавления кода для запуска каждого
приложения абсолютно одинаков,
меняется только адресная строка (месторасположение
exe-файла какой-либо программы).
Для запуска, скажем, Visual Basic нам
понадобится следующий фрагмент кода.
Private Sub mnuПриложенияVisual_Click()
Dim rc As Single
rc = Shell("C:\Program Files\Microsoft Visual Studio\VB98\Vb6.exe",
vbNormalFocus)
End Sub
Но для приложений в каталоге Windows,
например, "Блокнот", "Калькулятор",
Explorer, вместо полного адреса
достаточно ввести название программы
плюс расширение.
Таким вот образом у меня набежало где-то
двенадцать запускаемых из меню
программ. Безусловно, я добавляла не
весь пакет Office, а только наиболее часто
используемые программы, ну и все
остальные, без которых жизнь не так
весела.
Теперь плавно переходим к компиляции
проекта. Выполните команду "Файл"
- "Создать Приложения.exe". После
создания программы добавьте ярлык в
папку автозагрузки, после чего
творение будет запускаться
автоматически.
Какое же облегчение я испытала, когда
после запуска собственного (!)
программного продукта в SysTray появилась
его иконка и мне больше не надо было сто
раз в минуту открывать меню "Пуск"
- "Программы" и т. д. Особы,
настроенные более пессимистично,
предложат вынести ярлыки на "Рабочий
стол". Но это так неудобно! Вновь
начнется та же тягомотина, сворачивать
и разворачивать уже запущенные
программы, а как же экономия места на
"Рабочем столе"? Порой за
бесчисленным количеством иконок
совсем не видно дивной красоты
картинку, что, безусловно, плохо влияет
на самочувствие пользователя. И хорошо,
если печатаешь в одном Word, но когда
ежедневно используемых программ
набегает с дюжину, суток не хватит
чтобы со всем управиться.
Но теперь вы вооружены знанием, как
выходить из подобных критических
ситуаций. Удачи Вам и Вашим машинам!
Источник: http://www.mycomp.com.ua/
|