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

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

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

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

Visual FoxPro.
2. Класи, визначені користувачем, які розміщені в пам'яті в порядку їх завантаження.
3. Класи в поточній програмі.
4. Класи в VCX-файлі бібліотеки, відкритою командою set classlib.
5. Класи у файлах процедур, відкритих командоюset PROCEDURE.
6. Класи в послідовності виконуваних програм Visual FoxPro.
7. Реєстр OLE (якщо раніше була команда SET oleobject on).
Після того, як буде сформовано посилання на об'єкт, можна звертатися до нього точно так, як і до будь-якого створеного в програмі об'єкту класу Visual FoxPro.
Але зверніть увагу на відмінність в імені класу, об'єкт якої створюється. Звичайно використовується ім'я класу, що складається з одного слова. Для сом-об'єкту використовується ім'я класу з двох слів, перше з яких відповідає імені додатку, а друге - імені класу усередині цього додатку.
Якщо вам здастся, що все це ви вже чули, коли йшлося про OLE-автомат, ви будете недалекі від істини. Автоматизація OLE є не що інше, як частина моделі СОМ. Отже, якщо ми говоримо OLE, то маємо на увазі СОМ.
Що відбувається при зверненні до сом-об'єкту
При установці додатку, який грає роль серверу СОМ, в реєстрі Windows реєструється як сам додаток, так і всі його класи. Наприклад, подивіться в розділ реєстру Windows, що відноситься до Visual FoxPro, який також є сервером СОМ.
Можливості Visual FoxPro як COM-клієнта
Тепер розглянемо, які ж в цьому плані можливості програмного продукту Visual FoxPro.
ФУНКЦІЯ CREATEOBJECT ()
Як вже наголошувалося вище, за допомогою функції CREATEOBJECT () можна створити посилання на СОМ-об'єкт. Потрібно підкреслити, і це дуже істотно, що при зверненні до CREATEOBJECT () завжди створюється новий об'єкт.
Проведемо експеримент. Запустіть наступні команди з вікна команд:
Ох=CreateObject("Word.Application")
Оу=CreateObject("Word.Application")
А зараз викличте на екран діалогове вікно Close Program в Windows 95/98 (для цього потрібно натискувати ). В NT те ж саме можна зробити за допомогою Task Manager. Після цього порахуйте, скільки екземплярів додатку WinWord запущено. Їх напевно виявляться не менше два (можливо, раніше у вас ще був відкритий цей редактор).
Тепер продовжимо наші ігри. Поверніться в Visual FoxPro і звільніть змінні Ох і Оу. Більш того, можна навіть закрити взагалі додаток Visual FoxPro. Знову порахуйте, скільки екземплярів додатку знаходиться в роботі. Їх виявиться знову два. Для того, щоб позбутися запушеного додатку СОМ-серверу, потрібно звернутися до його методу Quit ().
Наш простенький експеримент виявився вельми повчальним - будьте дуже уважні при створенні СОМ-об'єктів в додатку. Перевірте, чи не був аналогічний об'єкт вже створений раніше. Врахуйте, що кожний новий додаток-сервер відтягує на себе значні ресурси пам'яті, яку можна використовувати набагато ефективніше. Якщо вам знадобиться одержати посилання на раніше запушений СОМ-об'єкт деякого класу, використовуйте функцію GetObject ().
ФУНКЦІЯ GETOBJECT ( )
Функція GETOBJECT () певною мірою аналогічна за призначенням вже розглянутої функції CREATEOBJECT (). Вона приймає два параметри. Перший - ім'я файлу, який потрібно відкрити, а другий - ім'я класу, з яким передбачається працювати.
Функція GETOBJECT () застосовується в двох випадках:
- для отримання посилання на існуючий файл;
- для отримання посилання на раніше запущений додаток-сервер.
Отримання ссилки на існуючий файл
Насамперед функція GETOBJECT () може бути використана для отримання посилання на файл, зареєстрований в OLE-розділі системного реєстру.
Припустимо, ви хочете відкрити файл BUDGET.XLS, який знаходиться в кореневому каталозі диска С:. Виконати це можна двома способами. Перший - створити земпляр сом-серверу Excel функцією CREATEOBJECT () і потім викликати його метод для відкриття файлу, що цікавить вас. Другий - безпосередньо відкрити файл функцією GETOBJECT ():
oExcel = GetOBJECT("с:udget.xls").
При цьому одночасно буде створений екземпляр об'єкту Excel, відкритий файл і одержано посилання на нього.
Зверніть увагу - 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, є числом, яке визначає,
Loading...

 
 

Цікаве