Помощь в написании студенческих работ
Антистрессовый сервис

Использование ранней и поздней привязки в автоматизации

РефератПомощь в написанииУзнать стоимостьмоей работы

Позднее привязывание. Если структура, вызываемое свойство или метод некоторого объекта определяются во время выполнения программы, то такое связывание называется «поздней привязкой» (late binding). В этом случае в операторе объявления объектной переменной присваивается не конкретный тип, а универсальный тип Object. Переменную такого типа можно использовать по мере необходимости для ссылок… Читать ещё >

Использование ранней и поздней привязки в автоматизации (реферат, курсовая, диплом, контрольная)

Язык VBA содержит ряд средств для получения доступа и управления объектами, которые предоставляются другими приложениями. Например, в MS Excel можно создать процедуру, которая будет управлять объектами программы Microsoft Word, а вернее, с так называемым сервером автоматизации. В таком случае Excel выступает клиентским, a Word — серверным приложением. Процесс управления одного приложения другим часто называют OLE-автоматизацией, или ActiveX-автоматизацией.

Автоматизация — это процесс взаимодействия одного программного компонента с другим компонентом и (или) управления им. Автоматизация, в некотором смысле, размывает границы между приложениями. Например, конечный пользователь может работать с объектом MS Access, не подозревая об этом.

Для работы с внешним объектом нужно сначала создать его экземпляр. Это можно сделать с помощью ранней и поздней привязки. Под привязкой понимается установка соответствия между вызовами, создаваемыми разработчиком функций, и выполняемым при их запуске реальным кодом. Привязывание — это замена имен функций адресами памяти, в которые «перейдет» код при вызове функции.

Способ привязывания к серверу автоматизации может влиять на многие аспекты программы, такие как производительность, гибкость и удобство сопровождения.

Рассмотрим типы связывания, доступные для клиентов автоматизации, а также преимущества и недостатки обоих способов.

Раннее привязывание. Если структура объекта известна при разработке приложения, то для его методов и свойств можно использовать процесс раннего привязывания (early binding).

При использовании раннего привязывания необходимо знать, что собой представляет интерфейс объекта (v-table). В VBA это осуществляется путем добавления ссылки на библиотеку типов, описывающую объект, его интерфейс и все функции, которые могут быть вызваны для объекта. Затем можно объявить объект определенного тина, установить и использовать объект через его интерфейс. Например, при автоматизации MS Word с помощью раннего привязывания нужно добавить ссылку на «библиотеку объектов Microsoft Word 12.0 Object Library» в диалоговом окне «Tools —> References» (Инструменты —> Ссылки) редактора VBE, а затем объявить переменную как имеющую тип «Word.Application». После этого для всех вызовов объектной переменной будет использоваться ранняя привязка.

Пример:

' Объявление объекта с ранней привязкой Dim oWord As Word.Application.

' Создание объекта с ранней привязкой

Set oWord = CreateObject («Word.Application») oWord. Visible = True.

При объявлении переменной можно сразу создать экземпляр объекта, если в операторе Dim использовать ключевое слово New. В этом случае не нужно использовать Set.

Пример:

Dim oWord As New Word.Application.

К сожалению, такое объявление (с New) не может использоваться при создании зависимых объектов и переменных стандартных типов (String, Long и т. п.), поэтому иногда необходимо использовать объявление и связывание с использованием Set и конструкции CreateObjectQ.

Позднее привязывание. Если структура, вызываемое свойство или метод некоторого объекта определяются во время выполнения программы, то такое связывание называется «поздней привязкой» (late binding). В этом случае в операторе объявления объектной переменной присваивается не конкретный тип, а универсальный тип Object. Переменную такого типа можно использовать по мере необходимости для ссылок на объекты любого типа. Важно отметить, что «позднее привязывание» — это вызываемая функция, а не способ ее вызова.

Пример:

' Объявление объекта с поздней привязкой Dim oWord As Object.

' Создание объекта с поздней привязкой

Set oWord = CreateObject («Word.Application»).

Преимущества и недостатки видов привязывания. Выбор того или иного вида привязывания в основном зависит от особенностей проекта. Например, корпорация Microsoft рекомендует использовать раннее привязывание. Однако существуют ситуации и для использования позднего привязывания.

Раннее привязывание является предпочтительным способом, так как обеспечивает следующие преимущества:

  • • увеличивается производительность программы, так как привязка к адресу вызываемой функции выполняется непосредственно на этапе разработки (компиляции), а не во время выполнения программы;
  • • уменьшается вероятность появления ошибок из-за поддержки безопасности типов;
  • • упрощается читабельность программного кода. Какой класс объектов поддерживает переменная, видно из ее объявления;
  • • предоставляет в процессе создания кода программы возможность Auto List редактора VBE, которая отображает список методов и свойств объектов конкретного типа.

Однако позднее привязывание полезно в следующих ситуациях:

  • • когда во время разработки точный интерфейс объекта неизвестен;
  • • при разрешении проблем совместимости нескольких версий компонента, интерфейс которого в определенных версиях был изменен;
  • • одну и ту же переменную предполагается использовать для объектов различных классов. Это оправданно, если разным классам присущи одинаковые методы или свойства, используемые в программе;
  • • объекты вызываются из других приложений, поэтому их нельзя объявить с помощью ранней привязки.

Функция CreateObject создает и возвращает ссылку на объект.

Синтаксис:

Public Shared Function CreateObject (.

ByVal Prld As String,.

Optional ByVal SName As String = «»).

As Object.

Параметры:

  • Prld — программный идентификатор создаваемого объекта;
  • SName — имя сетевого сервера, на котором будет создан объект. Если равен пустой строке (««), то используется локальный компьютер.

Функция GetObject возвращает ссылку на существующий объект.

Синтаксис:

Public Function GetObject (.

Optional ByVal PathName As String [= Nothing],.

Optional ByVal [Class] As String [= Nothing]).

As Object.

Параметры:

PathName — полный путь и имя файла, где содержится извлекаемый объект. Если параметр опущен или является строкой нулевой длины то требуется Class;

Class — строка, представляющая класс объекта. Имеет формат apname.obtype, где арпате — имя приложения, предоставляющего объект, obtype — тип или класс создаваемого объекта.

Обе функции GetObject и CreateObject возвращают ссылку на объект, но используются в разных случаях. CreateObject применяется, когда создается новый экземпляр приложения, а GetObject — когда приложение уже запущено.

Метод SendKeys передает активному окну одно или несколько нажатий клавиш, эмулируя действия пользователя.

Следует сказать, что не все приложения поддерживают автоматизацию, однако существует возможность управлять такими приложениями. Для этого используется метод Excel SendKeys. К сожалению, его применение ограничивается рядом трудностей, например, реализованный в приложении метод работает только с конкретным пользовательским интерфейсом. Если более поздняя версия программы имеет другой интерфейс, то приложение с методом SendKeys перестает работать.

Синтаксис:

SendKeys stringKeys [, wait]

Параметры:

  • stringKeys — строковое выражение с набором нажатий клавиш, который необходимо передать;
  • wait — указывает режим ожидания (тип Boolean). При False (по умолчанию) управление возвращается вызывающей процедуре сразу после завершения передачи нажатий клавиш. При True — только после завершения обработки переданных нажатий клавиш.

Замечание; для описания нажатий клавиш используются символьные коды. В качестве кода клавиши из основной раскладки клавиатуры используется сам символ. Например, нажатию клавиши, А в stringKeys соответствует выражение «А». Для описания нескольких нажатий клавиш нужно в выражение stringKeys последовательно включить коды каждой клавиши. Например, последовательности клавиш А, В и С соответствует выражение «АВС».

Для описания нажатий клавиш, которые не отображаются на экране (например, ENTER или TAB) или вызывают выполнение определенных действий, следует использовать их коды, например, для ENTER — код «ENTER», для TAB — код «ТЛВ», для SHIFT — код «+», для CTRL — код «Л», для ALT — код «%». Полная документация по использованию метода SendKeys представлена в справочном руководстве.

Пример 9.2.

В приведенном ниже листинге процедуры Test_Run (листинг 9.2) демонстрируется применение методов SendKeys, AppActivate и Shell для запуска из MS Excel другого приложения Windows текстового редактора Блокнот (NotePad).

Оператор AppActivate проверяет, запущен ли редактор. Если да, то активизирует его. Если нет, то фукция Shell запускает редактор на выполнение.

Процедура TestKeys отправляет приложению выражение «лу» (комбинация клавиш + — вставка в поле редактора содержимого буфера обмена). Результат выполнения процедуры TestRun приведен на рис. 9.7.

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

Листинг 9.2.

Dim оар

Sub Test_Run ().

On Error Resume Next AppActivate «notepad» .

If Err 0 Then Err = 0.

oap = Shell («NotePad.exe», 1).

If Err 0 Then.

MsgBox «Невозможно запустить редактор NotePad» .

Exit Sub End If End If.

SendKeys ,/4v", True 'вставка из буфера обмена End Sub.

Результат выполнения процедуры Test Run.

Рис. 9.7. Результат выполнения процедуры Test Run.

Показать весь текст
Заполнить форму текущей работой