Распределенные приложения: контроллеры автоматизации. Часть 2. Фертиков В.В. - 22 стр.

UptoLike

Составители: 

22
// ********************************************************//
// The Class CoWordApplication provides a Create and
// CreateRemote method to create instances of the default
// interface _Application exposed by the CoClass
// WordApplication. The functions are intended to be used
// by clients wishing to automate the CoClass objects
// exposed by the server of this typelibrary.
// ********************************************************//
CoWordApplication = class
class function Create: _Application;
class function CreateRemote(const MachineName: string):
_Application;
end;
Как видно, эти классы предназначены исключительно для создания соот-
ветствующих объектов автоматизации по команде клиентского приложения,
после чего можно будет использовать сервисы , предоставляемые объектом че-
рез его интерфейсы . Перейдем к изучению последних . Код , ответственный за
описание импортированного интерфейса _Application, в сильном сокраще-
нии приводится ниже:
_Application = interface(IDispatch)
['{00020970-0000-0000-C000-000000000046}']
...
function Get_Documents: Documents; safecall;
function Get_Windows: Windows; safecall;
function Get_ActiveDocument: WordDocument; safecall;
function Get_ActiveWindow: Window; safecall;
function Get_Selection: Selection; safecall;
...
property Documents: Documents read Get_Documents;
property Windows: Windows read Get_Windows;
property ActiveDocument: WordDocument read
Get_ActiveDocument;
property ActiveWindow: Window read Get_ActiveWindow;
property Selection: Selection read Get_Selection;
...
end;
Это описание обычно для программы на Object Pascal. Следует лишь
обратить внимание на ключевое слово safecall, специфицирующее описание
любого метода интерфейса. В связи с этим необходимо рассмотреть соглаше-
ние о безопасном вызове , принятое в Object Pascal. Рассматривая библиотеку
типов в редакторе, вы уже, наверное, обратили внимание на специальный тип
возвращаемого значения методов. Дело в том, что для серверов автоматизации
существует жесткое ограничение: все их методы должны возвращать значение
типа HResult. Этот тип определен в COM модели и дает значение, которое
свидетельствует о том , успешно ли завершилось выполнение операции или нет ,
                              22
// ********************************************************//
// The Class CoWordApplication provides a Create and
// CreateRemote method to create instances of the default
// interface _Application exposed by the CoClass
// WordApplication. The functions are intended to be used
// by clients wishing to automate the CoClass objects
// exposed by the server of this typelibrary.
// ********************************************************//
  CoWordApplication = class
    class function Create: _Application;
    class function CreateRemote(const MachineName: string):
      _Application;
  end;

      Как видно, эти классы предназначены исключительно для создания соот-
ветствующих объектов автоматизации по команде клиентского приложения,
после чего можно будет использовать сервисы, предоставляемые объектом че-
рез его интерфейсы. Перейдем к изучению последних. Код, ответственный за
описание импортированного интерфейса _Application , в сильном сокраще-
нии приводится ниже:
_Application = interface(IDispatch)
  ['{00020970-0000-0000-C000-000000000046}']
...
  function Get_Documents: Documents; safecall;
  function Get_Windows: Windows; safecall;
  function Get_ActiveDocument: WordDocument; safecall;
  function Get_ActiveWindow: Window; safecall;
  function Get_Selection: Selection; safecall;
...
  property Documents: Documents read Get_Documents;
  property Windows: Windows read Get_Windows;
  property ActiveDocument: WordDocument read
     Get_ActiveDocument;
  property ActiveWindow: Window read Get_ActiveWindow;
  property Selection: Selection read Get_Selection;
...
end;

     Это описание – обычно для программы на Object Pascal. Следует лишь
обратить внимание на ключевое слово safecall, специфицирующее описание
любого метода интерфейса. В связи с этим необходимо рассмотреть соглаше-
ние о безопасном вызове, принятое в Object Pascal. Рассматривая библиотеку
типов в редакторе, вы уже, наверное, обратили внимание на специальный тип
возвращаемого значения методов. Дело в том, что для серверов автоматизации
существует жесткое ограничение: все их методы должны возвращать значение
типа HResult. Этот тип определен в COM модели и дает значение, которое
свидетельствует о том, успешно ли завершилось выполнение операции или нет,