Поняття про Component Objects ModelПоняття про Component Objects Model, Детальна інформація

Поняття про Component Objects ModelПоняття про Component Objects Model
Тип документу: Реферат
Сторінок: 7
Предмет: Комп`ютерні науки
Автор: Олексій
Розмір: 32.7
Скачувань: 1022
Зверніть увагу - Visual FoxPro навіть не довелося пояснювати, що запрошуваний файл є файлом Excel. Windows вже відомо, що файли з розширенням .xls є листами Excel, і операційна система поступає відповідно.

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

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

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

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

oExcel = GetOBJECT(, "Excel.Application")

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

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

Команда SET OLEOBJECT

За замовчуванням 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

°

\x6100\x0324\x1300 Повертається

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

The online video editor trusted by teams to make professional video in minutes