Автоматизация — это метод автоматического управления одним приложением из другого приложения, как показано в коде ниже.
ПРОЦЕДУРА CreateNewWord;
вар
WordObj: Вариант;
начинать
WordObj := CreateOleObject('Word.Basic'); {Эта функция объявлена в модуле ComObj}
WordObj.AppShow;
WordObj.ФайлНовый;
конец;
Этот код откроет WORD и автоматически создаст новый документ (конечно, предполагается, что WORD установлен на вашем компьютере. Это кажется очень интересной и очень полезной функцией. Так как же наша программа может иметь функции автоматизации Can, аналогичные WORD). разрешить программам, разработанным на любом другом языке, автоматизировать наши программы. Это очень просто реализовать с помощью DELPHI.
В этой статье шаг за шагом будет объяснено, как разработать простой сервер автоматизации с примерами.
Создайте новое обычное приложение и сохраните проект как AutoSrv.bpr. Поместите элемент управления Edit в главную форму и сохраните его как MainForm.pas. Здесь мы планируем добавить заголовок окна, цвет формы и автоматически управлять текстом. Отредактируйте элемент управления (конечно, здесь реализовано очень мало функций, но этого достаточно, чтобы объяснить, как разработать автоматизированную серверную программу), добавьте в главное окно следующий код: (Примечание: добавьте объявления этих функций и процедур в TForm1 личное общественное место)
функция TForm1.GetCaption: строка;
начинать
результат := Self.Caption;
конец;
процедура TForm1.SetCaption(ACaption: строка);
начинать
Self.Caption := ACaption;
конец;
процедура TForm1.SetColor(AColor: TColor);
начинать
Self.Color := AColor;
конец;
процедура TForm1.SetEditText(AText: строка);
начинать
Self.Edit1.Text := AText;
конец;
Затем давайте добавим функции автоматизации в эту программу, нажмите кнопку «Новые элементы», перейдите на вкладку ActiveX во всплывающем окне «Новые элементы», выберите «Объект автоматизации», нажмите кнопку «ОК» и введите имя CoClass во всплывающем окне «Мастер объектов автоматизации». MyAutoSrv, Delphi автоматически сгенерирует файл AutoSrv_TLB.pas (библиотеку классов) и модуль, реализующий класс интерфейса библиотеки классов, и сохранит этот новый модуль как AutoSrvClass.pas.
Теперь, когда эта программа стала автоматизированным сервером, добавим к ней функции автоматизированного интерфейса:
(1) Откройте меню «Просмотр» -> «Библиотека типов», выберите интерфейс IMyAutoSrv в редакторе библиотеки типов, нажмите «Новое свойство», выберите его свойство как «Чтение | Запись», назовите его «Заголовок» и установите для типа «BSTR».
(2) Нажмите «Новый метод», назовите его «SetColor», перейдите на вкладку «Параметры» справа, нажмите «ДОБАВИТЬ», чтобы добавить параметр к вновь добавленной функции интерфейса, установите имя параметра на AColor и установите тип параметра на OLE_COLOR.
(3) Снова нажмите «Новый метод», назовите его SetEditText, добавьте к нему параметр, используя указанный выше метод, установите имя параметра на AText и установите тип параметра на BSTR.
Наконец, добавьте код реализации интерфейсной функции и всё ок:
Добавьте MainForm в раздел «Использование» файла AutoSrvClass.pas и измените его код на следующий код.
модуль AutoSrvClass;
{$WARN SYMBOL_PLATFORM ВЫКЛ}
интерфейс
использует
ComObj, ActiveX, AutoSrv_TLB, StdVcl, MainForm;
тип
TMyAutoSrv = класс (TAutoObject, IMyAutoSrv)
защищенный
функция Get_Caption: WideString;
процедура Set_Caption (const Value: WideString);
процедура SetColor (AColor: OLE_COLOR);
процедура SetEditText (const AText: WideString);
конец;
выполнение
использует ComServ;
функция TMyAutoSrv.Get_Caption: WideString;
начинать
Результат: = Form1.GetCaption;
конец;
процедура TMyAutoSrv.Set_Caption(const Value: WideString);
начинать
Форма1.SetCaption(Значение);
конец;
процедура TMyAutoSrv.SetColor(AColor: OLE_COLOR);
начинать
Форма1.SetColor(AColor);
конец;
процедура TMyAutoSrv.SetEditText(const AText: WideString);
начинать
Форма1.SetEditText(AText);
конец;
инициализация
TAutoObjectFactory.Create(ComServer, TMyAutoSrv, Class_MyAutoSrv,
ciMultiInstance, tmApartment);
конец.
Запустите эту программу один раз, и она автоматически зарегистрируется в качестве сервера автоматизации. Соответствующую регистрационную информацию можно найти в первичном ключе HKEY_CLASSES_ROOT в реестре.
Вышеупомянутое демонстрирует, как разработать сервер автоматизации, который мы здесь назовем.
Создайте новую программу, добавьте кнопку и объявите переменную Variant в ее области VAR: AutoSrv: вариант
Затем добавьте следующий код в Button1.
процедура TForm1.Button1Click(Отправитель: TObject);
начинать
AutoSrv := CreateOleObject('AutoSrv.MyAutoSrv'); {Эта строка представляет собой имя проекта сервера автоматизации плюс имя CoClass}
Self.Caption := AutoSrv.Caption;
AutoSrv.Caption := 'ХЕХЕ';
AutoSrv.SetColor(CLRed);
AutoSrv.SetEditText('ХАХА');
конец;
Функция CreateOleObject вернет интерфейс типа IDispatch. Это интерфейс IDispatch, который позволяет нашей программе выполнять поздние подключения к автоматизированному интерфейсу сервера. Например, если мы добавим AutoSrv.Hello выше, программу также можно будет скомпилировать и выполнить. прошло, но во время выполнения произойдет ошибка. Эффективность выполнения при использовании Variant будет медленнее, чем при непосредственном использовании объявления интерфейса.
Запускаем и нажимаем кнопку, видим, что автоматизированная сервисная программа загружена, а цвет формы и строка в EDIT1 установлены согласно нашему коду, это очень просто?