Описание COM/OLE
Краткое описание COM/OLE библиотеки. В данную библиотеку также включена поддержка типа VARIANT, используемого при передаче/получении данных в/из COM объекты. Для работы с COM объектами используются переменные с типом oleobj, такой переменной может соответствовать один COM объект. Чтобы вызвать какой-либо метод COM объекта применяется оператор позднего связывания ~. Связывание COM объекта с переменной может происходить двумя способами:
1. Создание нового COM объекта с помощью метода oleobj.createobj:
oleobj excapp
excapp.createobj( "Excel.Application", "" )
2. Связь с существующим COM объектом (дочерним), как результат вызова метода COM объекта:
oleobj workbooks workbooks = excapp~WorkBooks
Объект oleobj может поддерживать следующие возможности позднего связывания:
- простой вызов метода excapp~Quit, с параметрами или без;
- установка значения excapp~Cells( 3, 2 ) = "Hello World!";
- получение значения vis = uint( excapp~Visible );
- цепочка вызовов excapp~WorkBooks~Add, это равнозначно следующей записи
oleobj workbooks
workbooks = excapp~WorkBooks
workbooks~Add
Вызов метода может возвращать только тип VARIANT, для последующей конвертации данных в стандартные типы Gentee используются соответствующие операции присваивания и приведения типов. Параметры вызова методов COM объектов, а также присваиваемые значения автоматически конвертируются в соответствующие типы VARIANT, можно использовать следующие типы Gentee - uint, int, ulong, long, float, double, str, VARIANT.
После работы COM объект может быть освобожден методом oleobj.release иначе освобождение произойдет при уничтожении переменной, также объект освобождается если переменная связывается с другим COM объектом. Пример работы с COM объектом:
include : $"...\olecom.g"
func ole_example
{
oleobj excapp
excapp.createobj( "Excel.Application", "" )
excapp.flgs = $FOLEOBJ_INT
excapp~Visible = 1
excapp~WorkBooks~Add
excapp~Cells( 3, 2 ) = "Hello World!"
}
Объект oleobj имеет свойства:
- uint flgs - флаги, можно установить или получить значение флагов, свойство может содержать флаг $FOLEOBJ_INT - при передаче данных в COM объект беззнаковый uint тип Gentee автоматически конвертируется в знаковый тип VARIANT( VT_I4 )
- uint errfunc - функция для обработки ошибок. Данному свойству можно присвоить адрес функции, которая будет вызываться каждый раз, когда произойдет ошибка при обращении к COM объекту, функция должна иметь один параметр типа uint, через который будет передаваться код ошибки.
Свойства flgs и errfunc, автоматически устанавливаются у всех дочерних объектов.
Смотрите также | Исходники |