Отладка приложений



              

Применение утилиты Tester - часть 3


 ' Because Visual Basic isn't thread-safe

' устанавливаем схему уведомлений, использующую таймер. Однако сообщение

 ' может оказаться заблокированным, потому что вся обработка сосредоточена

 ' в единственном потоке. Эта функция позволяет вручную проверять 

' состояния window create и window destroy.

 Notifier.CheckNotification

' Панель сообщений в процедуре событий NotepadNotification_CreateWindow

 ' блокирована, поэтому код закрытия Блокнота не будет выполняться до тех 

'пор, пока панель сообщений не будет очищена,

 tInput.PlayKeys "%FX"

 tSystem.Pause 50

 tlnput.PlayKeys "{TAB}-" 

' Снова проверить уведомление. 

Notifier.CheckNotification

' Дать TNotify шанс перехватить сообщение о ликвидации окна.

 tSystem.Pause 100

' Отсоединить уведомления. Если вы не сделаете этого в WSH, деструктор

 ' класса никогда не получит вызова, так что уведомление останется

 ' активным в таблице уведомлений. 

WScript.DisconnectObject Notifier 

Set Notifier = Nothing

Sub NotepadNotificationCreateWindow ( twin)

MsgBox ( "Notepad was created!")

 End Sub 

Sub NotepadNotificationDestroyWindow ()

MsgBox ( "Notepad has gone away....")

 End Sub

Время от времени необходимо вызывать метод TNotify checkNotification. (причины изложены чуть позже, в разделе "Реализация утилиты Tester" данной главы). Периодический вызов метода checkNotification гарантирует, что сообщения уведомлений могут проходить, несмотря на то, что в языке, который вы выбрали, может отсутствовать цикл сообщений. Код листинга 13-2 показывает, как нужно использовать панель сообщений в процедурах уведомлений о событиях, хотя применение панели сообщений в реальных сценариях нежелательно, потому что это может вызвать проблемы, неожиданно изменяя окно, обладающее фокусом.

Имейте также в виду, что количество уведомлений ограничено пятью, поэтому нельзя применять TNotify для общих задач сценария, таких как ожидание появления диалогового окна File Save.


Содержание  Назад  Вперед