Введение
Для кого предназначена эта книга
Структура книги
Модель составных объектов СОМ
Назначение СОМ
Краткая история развития СОМ
Дальнейшее развитие СОМ
Соглашения, принятые в этой книге
Как связаться с автором

Глава 1. Использование интерфейсов в Delphi
Определение интерфейса
Концепция интерфейса
Разница между интерфейсом и классом
Неизменность интерфейса
Объявление интерфейса
Определение глобальных уникальных идентификаторов
Реализация интерфейса
Реализация IUnknown
Функция QueryInterface
Функция _AddRef
Функция _Release
Реализация интерфейса IUnknown вручную
Использование класса TInterfacedObject для автоматической
реализации интерфейса IUnknown
Создание, использование и уничтожение интерфейсов
Подсчет ссылок
Получение указателя на интерфейс
Прямое присваивание
Функция GetInterface
Оператор as
Модель объекта и модель интерфейса
Как перехитрить механизм автоматического подсчета ссылок
Демонстрация работы с интерфейсом
Программирование с использованием интерфейсов
Пример. Алгоритм с использованием интерфейса
Другие аспекты работы с интерфейсами
Реализация множества интерфейсов в одном классе
Множество интерфейсов не есть множественное наследование
Разрешение неоднозначности методов
Делегирование интерфейса
Свойства интерфейса
Демонстрационная программа с использованием графики
Резюме

Глава 2. Интерфейсы и СОМ
Глобальные идентификаторы и СОМ
СОМ-объекты и генераторы классов
СОМ-объекты
Генератор классов
Встроенные СОМ-серверы
Поддержка модели потоков задач
Регистрация сервера
Конструкторы, разработанные пользователем
Создание экземпляра встроенного СОМ-объекта
Пример. Одномерный алгоритм распределения загрузки контейнеров
Создание СОМ-сервера распределения загрузки
Приложение-клиент сервера распределения загрузки
Модификация сервера распределения загрузки
Модификация приложения-клиента программы распределения
Повторение пройденного
Внешние СОМ-серверы
Методы формирования экземпляра СОМ-объекта
Формирование экземпляра внешнего СОМ-объекта
Маршалинг данных
Массивы типа Variant
Формирование массива типа Variant
Функция VarArrayCreate
Функция VarArrayOf
Доступ к элементам массива типа Variant
Повышение производительности при работе с массивами
Пример. Программы с массивом типа Variant
Использование СОМ-объектов в других языковых средах
Резюме

Глава 3. Библиотеки типов
Назначение библиотеки типов
Доводы в пользу применения библиотек типов
Класс TTypedComObject
Создание библиотеки типов в среде Delphi
Использование редактора Type Library Editor
Кнопка New Interface
Кнопка New Dispinterface
Кнопка New CoClass
Кнопка New Enumeration
Кнопка New Constant
Кнопка New Alias
Кнопка New Record
Кнопка New Union
Кнопка New Module
Кнопка New Method
Кнопка New Property
Кнопка Refresh Implementation
Кнопка Register Type Library
Кнопка Export to IDL
Программа просмотра библиотеки типов
Обработка перечислений
Обработка интерфейсов и интерфейсов диспетчирования
Обработка сопряженных классов
Расширение возможностей приложения TIViewer
Резюме

Глава 4. Автоматизация
Назначение автоматизации
Интерфейсы
Переменные типа variant
Интерфейсы диспетчирования
Дуальные интерфейсы
Встроенные серверы автоматизации
Пример. Сервер преобразования единиц измерения
Функции CreateOleObject и GetActiveOleObject
Пример. Клиент сервера Unit Conversion
Внешний сервер автоматизации
Возвращаемое значение и соглашение о безопасном вызове
Использование автоматизации применительно к существующему
приложению
Добавление объекта автоматизации
Создание клиента автоматизации
События в СОМ и обратные вызовы
Интерфейсы диспетчирования
Создание сервера автоматизации
Создание клиентского приложения в среде Delphi 3 или Delphi 4
Создание клиентского приложения в среде Delphi 5
Выполнение клиентского приложения
Подключение множества клиентов к серверу
Интерфейсы с обратным вызовом
Создание сервера
Создание клиентского приложения
Автоматизация применительно к Microsoft ADO
Базовые концепции ADO
Где взять ADO
Подключение ADO к среде Delphi
Подключение к базе данных
Обращение к набору записей
Выполнение команды
Доступ к значениям полей
Обработка ошибок в базе данных
Пример. Приложение на базе Microsoft ADO
Резюме

Глава 5. Элементы управления ActiveX и активные формы
Использование существующих элементов ActiveX в среде Delphi
Элемент управления Microsoft Agent
Где взять Microsoft Agent
Подключение Microsoft Agent к среде Delphi
Программирование с использованием Microsoft Agent
Пример. Приложения с использованием Microsoft Agent
Создание элементов управления ActiveX
Доводы в пользу создания элемента управления ActiveX
Преобразование компонента VCL в элемент управления ActiveX
Регистрация элемента управления ActiveX
Тестирование элемента управления ActiveX в среде Visual Basic
Включение вкладок свойств в элемент управления ActiveX
Включение вкладок свойств, предопределенных в Delphi
Включение вкладок свойств, разработанных самостоятельно
Распространение элементов управления ActiveX
Активные формы
Создание активной формы
Тестирование ActiveForm
Резюме

Глава 6. DCOM
Базовые концепции DCOM
Программирование с использованием DCOM
Создание DCOM-сервера
Инсталляция DCOM-сервера
Инсталляция в Windows NT Server
Инсталляция в операционной системе Windows 95/98
Создание DCOM-клиента
Работа с удаленными наборами данных при помощи DCOM
Описание приложения
Создание сервера
Маршалинг структур записей
Серверное приложение
Создание приложения-клиента с административными функциями
Создание клиентского приложения для пункта реализации
Резюме

Глава 7. Хранение структурированных данных
Основные понятия
Программирование операций с файлами хранения структурированных данных
Создание файла хранения структурированных данных
Операция открытия существующего файла хранения
структурированных данных
Операции с потоками
Создание потока
Запись данных в поток
Открытие потока
Чтение данных из потока
Создание и использование дополнительных хранилищ
Последовательное перемещение по структурным элементам докфайла
Сжатие файлов хранения структурированных данных
Пример. Использование файла хранения структурированных данных
в приложении
Пример. Просмотр файлов хранения структурированных данных
Резюме

Глава 8. Хранение структурированных данных и OLE
Наборы свойств OLE
Соглашения относительно наборов свойств OLE
Интерфейсы IPropertySetStorage и IPropertyStorage
Считывание свойств
Запись свойств
Удаление свойств из потока
Перечисление свойств
Компонент для считывания и записи набора свойств
Пример. Работа со свойствами, определенными пользователем
Пример. Поиск файла по заданному свойству
Составные документы и контейнеры OLE
Активизация и деактивизация серверов OLE
Сохранение и загрузка объектов в файлы и потоки
Слияние меню
Использование системного буфера обмена
Пример. Простой контейнер OLE
Резюме

Глава 9. Программирование оболочки Windows
Программы управления контекстными меню
Интерфейс IShellExtInit
Интерфейс IContextMenu
Регистрация программы управления контекстными меню
Программа перехвата операций копирования
Интерфейс ICopyHook
Регистрация перехватчика копирования
Связи системной оболочки
Интерфейсы связей системной оболочки
Создание связи
Пиктограммы в системном лотке
Сообщения от пиктограмм системного лотка
Компонент TDCPTrayIcon
Пример. Вывод пиктограммы в системный лоток
Программа управления диалоговыми окнами свойств
Создание шаблона вкладки
Интерфейсы программы управления окнами свойств
Процедура окна
Функция обратного вызова
Что же дальше?

Приложение А

Рекомендуемая литература и ресурсы
Среда программирования Delphi
COM/OLE
Предметный указатель