CREATE_LICENCED_OBJECT


Синтаксис

CREATE_LICENSED_OBJECT(ProgID: STRING[];
                       LicenseKey: STRING[];
                       [ ServerName: STRING[] ];
                       [ OnTerminalClient: SCAL[2] ]
                      ): OBJECT;

Описание

Создает лицензионный объект COM автоматизации с использованием явно заданного ключа лицензии времени исполнения LicenseKey и возвращает ссылку на объект. Установленные на компьютере и встроенные в клиент ASB лицензии игнорируются. Если передан неправильный ключ лицензии времени исполнения LicenseKey, будет выброшено исключение 865, а если кокласс не поддерживает лицензирование времени исполнения - исключение 866.

Кокласс объекта определяется, исходя из программного идентификатора ProgID. Вместо ProgID можно указать CLSID, заключенный в фигурные скобки. На самом деле, первое, что выполнит функция - преобразует ProgID в CLSID по информации из системного реестра, а если это не удастся, выбросит исключение 140.

Необязательный флаговый параметр OnTerminalClient имеет значение только для терминального клиента ASB. По умолчанию флаг поднят, т.е. объект будет создан на стороне терминального клиента. При сброшенном флаге объект будет создан на стороне сервера приложений ASB, что небезопасно, поскольку сервер автоматизации будет выполняться на невидимом рабочем столе. Создавая и используя объект COM автоматизации на стороне сервера приложений ASB программист должен быть уверен, что сервер автоматизации не станет ожидать реакции пользователя.

Если параметр ServerName не указан или пуст, объект будет создан на локальном компьютере. В противном случае объект будет создан на удаленном компьютере с использованием технологии DCOM. В этом случае в качестве первого параметра иногда разумнее задать CLSID, поскольку на локальном компьютере (в отличие от удаленного) кокласс может быть не зарегистрирован. Как правило, на удаленном компьютере потребуется настройка DCOM при помощи dcomcnfg.exe.

В случае неудачи функция выбрасывает исключение.

До версии 14.136.020 процедура называлась CreateOBJECT2. В настоящее время допустимы оба варианта имени.

Ключ лицензии нельзя хранить в тексте программы открытом виде; следует как минимум зашифровать его при помощи ENCRYPTSTR, а перед созданием объекта расшифровать при помощи DECRYPTSTR.

После создания объект будет подсчитывать количество ссылок на себя, и, когда число ссылок станет равным нулю (объект никому больше не нужен), например, в результате выполнения SETEMPTY, присваивания, или завершения блока программы, объект будет автоматически уничтожен. Если объект реализуется внепроцессным сервером COM, уничтожение объекта может не означать завершения работы серверного приложения; это зависит от реализации сервера. Часто применяется следующая логика: если на момент уничтожения объекта главное окно серверного приложения видимо, приложение не завершается, если невидимо - завершается.

См. также