WWW.REFERATCENTRAL.ORG.UA - Я ТУТ НАВЧАЮСЬ

... відкритий, безкоштовний архів рефератів, курсових, дипломних робіт

ГоловнаІнформатика, Компютерні науки → Поняття про Component Objects Model (Реферат) - Реферат

Поняття про Component Objects Model (Реферат) - Реферат

Наш простенький експеримент виявився вельми повчальним - будьте дуже уважні при створенні СОМ-об'єктів в додатку. Перевірте, чи не був аналогічний об'єкт вже створений раніше. Врахуйте, що кожний новий додаток-сервер відтягує на себе значні ресурси пам'яті, яку можна використовувати набагато ефективніше. Якщо вам знадобиться одержати посилання на раніше запушений СОМ-об'єкт деякого класу, використовуйте функцію GetObject ().

ФУНКЦІЯ GETOBJECT ( )

Функція GETOBJECT () певною мірою аналогічна за призначенням вже розглянутої функції CREATEOBJECT (). Вона приймає два параметри. Перший - ім'я файлу, який потрібно відкрити, а другий - ім'я класу, з яким передбачається працювати.

Функція GETOBJECT () застосовується в двох випадках:

  • для отримання посилання на існуючий файл;

  • для отримання посилання на раніше запущений додаток-сервер.

Отримання ссилки на існуючий файл

Насамперед функція GETOBJECT () може бути використана для отримання посилання на файл, зареєстрований в OLE-розділі системного реєстру.

Припустимо, ви хочете відкрити файл BUDGET.XLS, який знаходиться в кореневому каталозі диска С:. Виконати це можна двома способами. Перший - створити земпляр сом-серверу Excel функцією CREATEOBJECT () і потім викликати його метод для відкриття файлу, що цікавить вас. Другий - безпосередньо відкрити файл функцією GETOBJECT ():

oExcel = GetOBJECT("с:budget.xls").

При цьому одночасно буде створений екземпляр об'єкту Excel, відкритий файл і одержано посилання на нього.

Зверніть увагу - Visual FoxPro навіть не довелося пояснювати, що запрошуваний файл є файлом Excel. Windows вже відомо, що файли з розширенням .xls є листами Excel, і операційна система поступає відповідно.

Якщо ситуація не так однозначна, як в даному випадку, тобто розширення імені файлу не визначає однозначно додаток, який з ним оперує, потрібне в другому параметрі виклику функції getobject () вказати ім'я СОМ-класу (додатку-серверу).

До сказаного слід додати: функція getobject () настільки кмітлива, що другий раз не запускатиме вже працюючий додаток, а приєднає до нього файл, що цікавить вас.

Отримання ссилки на раніше запущений додаток-сервер

Якщо ви бажаєте одержати тільки посилання на раніше запущений додаток-сервер, достатньо при виклику функції GETOBJECT () опустити перший параметр:

oExcel = GetOBJECT(, "Excel.Application")

Якщо виявиться, що ви "промахнулися", тобто додаток не був раніше запущено, з'явиться повідомлення про помилку OLE.

Читаючи розділ 21 ви зможете переконатися на прикладах, як зручно користуватися цією функцією для отримання посилань на додаток-сервер без запуску його додаткових екземплярів.

Команда SETOLEOBJECT

За замовчуванням Visual FoxPro шукає клас, вказаний в CREATEOBJECT (), в реєстрі Windows, якщо він не був знайдений у всіх попередніх групах класів, як про це було сказано вище. Цю функцію можна відключити установкою SET OLEOBJECT off. Фактично при цьому відключається можливість роботи з СОМ-об'єктами.

Коли в цьому може виникнути потреба? Коли ви упевнені, що з СОМ-об'єктами працювати не будете, і бажаєте зберегти час і ресурси, позбавивши систему від необхідності проглядати реєстр у пошуках того, чого там явно нема.

Якщо при цьому ви турбуєтеся про можливість роботи з елементами управління ActiveX, то цього робити не варто. Така настройка не перешкоджає роботі з ними, оскільки Visual FoxPro знає про те, що це OLE-об'єкти, і автоматично завантажує засоби підтримки OLE перед тим, як їх відкрити.

У будь-якому випадку настройка зачіпає тільки роботу з тими об'єктами, які явно специфіковані в коді програми.

І ще одне зауваження. Оскільки функція GETOBJECT () завжди має справу з OLE-об'єктами, то при установці SET OLEOBJECT OFF функція поверне код помилки.

Функція ComClassInfo ()

Функція ComClassInfo () використовується для отримання інформації з системного реєстру про раніше створені СОМ-об'єкти. Перший параметр функції, oObject, представляє ссилку на об'єкт, інформація про який вас цікавить. Другий параметр, iІnfoCode, є числом, яке визначає, яка саме інформація повинна бути витягнута. Можливі значення iІnfoCode приведені в табл. 20.1.

Таблиця 20.1. Інформація, що повертається функцією Comciassinfо () при різних значення параметра iinfoCode

Значення ilnfoCodе

Інформація, що Повертається

1 (значення по замовчуванню)

Програмний ідентифікатор об'єкту (ProgID). Цей ідентифікатор задає вхід реєстру, який асоціюється з CLSID. Вважайте, що це ім'я, однозначне пов'язане з CLSID. Кожна версія програми має власний програмний ідентифікатор. Наприклад, ProgID для Visual FoxPro 6 буде Visual.Foxprо.Applcation.6, а для Visual FoxPro 5 - Visual.Foxprо.Application.5. Ідентифікатор ProgID також є ім'ям класу, яке можна використовувати для створення об'єкту СОМ-серверу. Наприклад, можна звернутися до createobject () таким чином:

оVFP5=CREATEOBJECT("Visual.Foxpro.Application.5") оVFP6=CREATEOBJECT("Visual.Foxpro.Application.6") Але, як правило, небажано, щоб додаток був жорстко прив'язаний до певної версії , СОМ-серверу. Тому має сенс, передавши як перший параметр Visual. Foxpro .Application, запитати у реєстру, яка з версій встановлена на даному комп'ютері (а якщо встановлено декілька версій, то яка з них більш нова), і створювати об'єкт СОМ-серверу саме цієї версії

2

Програмний ідентифікатор, не залежний від версії (VersionlndependentProglD). VersionindepencientProgiD асоціює ProgID з CLSID. Він використовується для визначення останньої версії об'єкту додатку, посилаючись на його клас, і не змінюється від версії до версії

3

Оригінальне англійське ім'я об'єкту, про який прийнято говорити як про „дружнє" ім'я (friendly name)

4

Идентификатор класу объекта

Ось яке значення буде повернено функцією ComClassinfo () при завданні як перший параметр Excel.Application і при різних варіантах значень другого параметра:

1 Excel.Application.8

2 Excel.Application

3 Microsoft Excel 97 Application

4 { 00024500-0000-0000-COOO-00000000004 6}

Функція CreateObjectEX ()

Як було описано вище, модель DCOM припускає, що додаток COM-серверу розміщений і виконується на різних комп'ютерах мережі. Як правило, комп'ютер клієнта конфігурується так, щоб знати, де знаходиться СОМ-сервер, і стандартна функція Createobject () може працювати без жодних додаткових фокусів. Використовування функції CreateObjectEX () дозволяє обійтися без спеціальної конфігурації комп'ютерів мережі і безпосередньо специфікувати потрібний комп'ютер.

Це дуже зручно у тому випадку, коли бажано розподілити навантаження між декількома комп'ютерами в мережі. Використовування CreateObjectEX () можливе в операційній системі Windows NT 4.0 або більш старшій версії або в Windows 95/98 зі встановленим механізмом DCOM.

Хай вас не збентежує, що при усіканні імені функції CreateObjectEX () до 13 символів воно виглядає як CreateObjectE (). Це все одно та ж сама функція CreateObjectEX().

Функція ComArray ()

В Visual FoxPro найчастіше приймається, що початковий елемент масиву має індекс 1. Але це не обов'язково. В інших мовах програмування початковий елемент має індекс 0.

Функція ComArray () дозволяє визначитися з тим, як передаватимуться масиви в СОМ-об'єкт. В результаті буде зареєстровано, яким чином здійснюється обмін масивами з конкретним COM-об'єктом.

Функція має два параметри.

oObject Посилання на СОМ-об'єкт, до якого адресується запит або який

змінюється

nSettinga Це необов'язковий числовий параметр, який визначає спосіб обміну

масивами з COM-об'єктом. В табл. 20.2 приведені його можливі

значення. Якщо цей параметр опушений, функція повертає поточну

установку для даного сом-об'єкту

Таблиця 20.2. Спосіб передачі масиву в СОМ-об'єкт при різних значенняпараметра nSettings

Значення nSettings

Опис

0

Перший елемент масиву має індекс 0, і масив передається в СОМ-об'єкт по значенню

1 (за замовчуванням)

Перший елемент масиву має індекс 1, і масив передається в СОМ-об'єкт по значенню. Така настройка сумісна з попередніми версіями Visual FoxPro

10

Перший елемент масиву має індекс 0, і масив передається в СОМ-об'єкт по ссилці

11

Перший елемент масиву має індекс 1, і масив передається в СОМ-об'єкт по ссилці

Зверніть увагу - настройка у функції сприймається системою тільки при передачі масиву в СОМ-об'єкт з використанням наступного синтаксису:

Loading...

 
 

Цікаве