Visual Basic Использование DLL и Windows API Работа с системной панелью
Работа с системной панелью
01.11.2011 11:35

Работа с системной панелью

Некоторые приложения, написанные для Windows 95 и Windows NT версии 4, ра-отают в системной панели - небольшой прямоугольной области, расположенной в правой части панели задач (см. рисунок). На системную панель часто помещаются приложения, управляющие различными устройствами

Или работающие по расписанию. Скорее всего, на вашем компьютере в системной панели находятся часы и, возможно, значок с динамиком для регулировки громкости. 3 комплект Visual Basic входит пример, который компилируется в элемент ActiveX. Мы воспользуемся им для того, чтобы поместить приложение на системную панель.

Издание элемента SysTray

Перед тем как пользоваться элементом ActiveX в приложении, необходимо отком-шлировать его и сохранить в подкаталоге \System каталога Windows. Элемент троится так:

Откройте проект Systray. vbp из каталога \Cornmon\Tools\VB\Unsupprt\Systray на компакт-диске Visual Basic.

В окне проекта откройте папку Modules и дважды щелкните на строке mSysTray, чтобы открыть модуль в окне программы.

Просмотрите секцию (Global)(Declarations) модуля. Обратите внимание на объявления нескольких функций API, среди которых — CallWindowProc, GetWindowLong и Shell_NotifyIcon (рис. 19.5). Наряду с прочими они помещают значок программы на системную панель. Мы не будем подробно рассматривать тонкости их работы, однако вы можете просмотреть исходный текст программы и ознакомиться с комментариями, чтобы понять, как работает данный элемент.

Рис. 19.5. Объявления функций API

3. Выполните команду File > Make Systray. ocx.

4. В диалоговом окне Make Project укажите в поле Save In подкаталог \System каталога, в котором установлена система Windows. На большинстве компьютеров это будет C:\Windows\System.

5. Нажмите кнопку О К, чтобы завершить компиляцию элемента.

Элемент SysTray готов к работе.

Использование элемента SysTray

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

1. Создайте новый проект командой File > New Project. Выберите в диалоговом окне New Project значок Standard EXE.

2. Задайте свойству Name формы Form1 значение frmMain.

3. Щелкните правой кнопкой мыши на панели элементов и выберите из контекстного меню команду Components....

4. Установите флажок рядом со строкой C:\Windows\System\SysTray. ocx, чтобы добавить элемент SysTray на панель элементов. Нажмите кнопку ОК.

5. Поместите элемент SysTray на форму frmMain и задайте свойству Name значение clsSysTray.

6. В окне свойств задайте свойству InTray значение True, а свойству TrayTip — значение Запуск приложений.

7. Щелкните на форме frmMain, чтобы сделать ее активной. Запустите редактор меню командой Tools > Menu Editor....

8. Создайте меню. Задайте свойству Caption значение &Приложения, а свойству Name — значение mnuApp. Нажмите кнопку Next.

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

0. Создайте следующие команды.

1. В результате должно получиться меню, показанное на рис. 19.6. Закройте редактор меню кнопкой ОК.

2. Дважды щелкните на форме frmMain, чтобы открыть окно программы.

3. Добавьте следующий фрагмент в процедуру события Load:

Private Sub Form_Load()

Me. Hide End Sub

4. Откройте процедуру события MouseDown элемента clsSysTray и добавьте следующий фрагмент:

Private Sub clsSysTray_MouseDown(Button As Integer, Id As Long)

If Button = 2 Then PopupMenu mnuApp

End If End Sub

5. Добавьте следующий фрагмент в процедуру события Click меню mnuAppCalc:

Private Sub mnuAppCalc_Click() Dim rс As Double

Рис. 19.6. Структура меню

Гс = Shell("calc. exe", vbNormalFocus) End Sub

16. Добавьте следующий фрагмент в процедуру события Click меню mnuAppCalc:

Private Sub mnuAppExplorer_Click()

Dim гс As Double

Rс = Shell("explorer. exe", vbNormalFocus) End Sub

17. Добавьте следующий фрагмент в процедуру события Click меню mnuApp Notepad:

Private Sub mnuAppNotepad_Click()

Dim rс As Double

Rс = Shell("notepad. exe", vbNormalFocus) End Sub

18. Добавьте следующий фрагмент в процедуру события Click меню mnuAppClose:

Private Sub mnuAppClose_Click()

Unload Me

Set frmMain = Nothing End Sub

19. Сохраните и запустите проект.

На системной панели появится маленький значок в виде тостера. Если на пару секунд задержать над ним указатель мыши, появляется подсказка «Запуск прило -

Caption

Name

& Калькулятор П&роводник &Блокнот

&3акрыть

MnuAppCalc mnuAppExplorer mnuAppNotepad mnuAppSep1 mnuAppClose

Жений». Если щелкнуть на значке правой кнопкой мыши, открывается контекстное меню, из которого можно выбрать приложение (рис. 19.7):

Рис. 19.7. Запуск приложений из системной панели

Вы можете изменить программу и включить в нее свои любимые приложения, запускаемые чаще других, и даже подключить к ней базу данных или ASCII-файл для настройки команд меню. Вашего опыта работы с Visual Basic б вполне хватит для того, чтобы создать такое приложение и наделить его любыми необходимыми возможностями.

ПОДСКАЗКА Приложения, работающие на системной панели, обычно содержат контекстное меню, с помощью которого пользователь может выполнять нужные действия с программой. Вы должны как минимум обеспечить возможность закрыть приложение. Если вы хотите, чтобы оно отображало форму или диалоговое окно, поместите вызов метода Show в процедуру события MouseDblClick элемента clsSysTray.

Взгляд в будущее

На самом деле наше знакомство с Windows API не назовешь даже поверхностным. Приведу лишь небольшой список интересных вещей, которые можно сделать с помощью Win32 API:

О Создание «плавающих» форм, которые постоянно отображаются поверх всех остальных форм.

О Использование сетевых возможностей с помощью функций WNet. О Создание приложений для видеозаписи с помощью функций AVICap.

Хорошие программные средства в сочетании с небольшой долей творческого воображения способны творить чудеса. К сожалению, полное описание Win32 API заняло бы несколько толстых книг, так что я даже не стану пытаться рассказать вам все необходимое. По мере создания новых приложений и накопления опыта программирования на Visual Basic вы узнаете об ограничениях этого языка. Когда это произойдет, начинайте изучать API. Visual Basic в сочетании с Win32 API позволяет написать практически любую программу.

Наконец, достаньте хорошую книгу по Windows API. Хотя API Viewer предоставляет объявления функций API, он совершенно не объясняет смысл параметров,

Необходимых для работы функций. В хорошей книге по API должны быть описаны все функции вместе с параметрами. Не жалейте денег — если вы собираетесь серьезно заняться программированием, такая книга вам все равно понадобится.

ПОДСКАЗКА Обязательно купите книгу с описанием Windows API. Она пригодится гораздо раньше, чем вы думаете.

Теперь, когда вы знаете основы работы с Visual Basic, попробуйте «поиграть» с примерами приложений, находящимися на компакт-диске Visual Basic. Кроме того, займитесь самостоятельным программированием, и незаметно для себя вы станете настоящим профессионалом в области Visual Basic.


[1] В этом и всех остальных примерах, входящих в комплект Visual Basic, надписи и тексты были по возможности переведены на русский язык для удобства чтения. — Примеч. перев.

[2] Формат даты (как и денежных единиц) зависит от системных установок Windows (значок Язык и стандарты (Regional Settings) в Панели управления). — Примеч. перев.