
- •5. Управление коммуникациями в ос
- •5.1. Общая характеристика коммуникаций
- •5.2. Концепции технологии Клиент-Сервер
- •5.3. Внутренние коммуникации между процессами
- •5.3.1. Неименованные каналы
- •5.3.2. Обмен сообщениями
- •5.3.3. Обмен данными через Clipboard
- •1. Подготовка данных для передачи в Clipboard;
- •1. Открытие Clipboard
- •2. Проверка наличия требуемого формата данных в Clipboard
- •3. Чтение данных из Clipboard
- •4. Закрытие Clipboard
- •5.3.4. Обмен данными по технологии dde
- •5.3.5. Обмен данными по технологии ole
- •5.3.5.1. Введение
- •5.3.5.2. Понятие документ-ориентированной среды
- •5.3.5.3. Принципы ole
- •5.3.5.4. Характеристика технологии ole
- •5.3.5.4.1. Ole реализует концепцию визуального редактирования - редактирования на месте.
- •5.3.5.4.2. Другой особенностью ole является возможность приложения предоставить ряд своих функций (например, проверку орфографии) для доступа из других приложений - ole-Automation.
- •5.3.5.4.3. Ядром ole стал способ хранения данных в составном документе.
- •5.3.5.4.4. Дополнительные возможности ole:
- •5.3.5.4.5. Иерархия средств ole
- •5.3.5.4.6. Недостатки ole
- •5.3.5.4.7. Трехуровневая адресация ole-объекта
- •5.4. Внешние коммуникации
- •5.4.1. Протоколы тср/ip
- •5.4.1.1. Определение и достоинства протокола tcp/ip
- •5.4.1.2. Архитектура tcp/ip
- •5.4.1.3. Соответствие между моделями tcp/ip и iso osi
- •5.4.2. Протокол ip
- •5.4.2.1. Структура заголовка ip-пакета
- •5.4.3. Протокол udp
- •5.4.4. Протокол tcp
- •5.4.4.1. Структура tcp-сегмента
- •5.4.4.2. Этапы tcp-сеанса
- •5.4.5. Программные средства поддержки сетей
- •5.4.5.1. Состав программных средств поддержки сетей
- •1. Почтовые ящики
- •2. Именованные каналы
- •3. Удаленные вызовы процедур
- •4. Протокол NetBios
- •5.4.5.2. Программные средства работы с сокетами
- •5.4.6. Сетевое программное обеспечение уровня приложений
- •5.4.6.1. Протокол ftp
- •5.4.6.2. Протокол smtp
5.3.3. Обмен данными через Clipboard
Вопрос (
Clipboard - это средство обмена данными, представляющее собой совокупность разделяемой области памяти и набора функций, обслуживающих эту область.
)Вопрос
Традиционным способом использования Clipboard является обмен данными при участии пользователя.
Однако и другие, более развитые средства обмена данными, такие как DDE и OLE, используют концепции Clipboard в своей основе.
Вопрос (
Важнейшей концепцией Clipboard является концепция формата данных.
Широкое распространение Clipboard и получила из-за фактической стандартизации ряда форматов данных, используемых при обмене между приложениями.
Эта стандартизация позволила снять с пользователя проблемы преобразования данных при передаче их из одного приложения в другое, что и способствовало широкому распространению Clipboard. Среда сама берет на себя проблемы преобразования данных на основе ряда стандартных форматов.
)Вопрос
Стандартизация форматов, однако, не ограничивает возможности их расширения.
Вопрос (
Приложение может создать новый формат, отличный от стандартного формата. Его только необходимо зарегистрировать в среде с помощью функции
RegisterClipboardFormat(строка с именем нового формата),
передав этой функции имя формата.
Функция возвращает уникальный идентификатор формата. Если другие приложения вызовут эту функцию, передав ей это же имя формата, то функция возвратит им уже созданный идентификатор формата.
Таким образом, все приложения будут пользоваться одним и тем же идентификатором для обмена данными, представленными в этом формате.
)Вопрос
Стандартные форматы данных обозначаются константами, имеющими символические имена. Приведем в качестве примера пару таких форматов:
cf_Text - ASCIIZ строка;
cf_BitMap - один из форматов графического изображения.
Существует еще несколько (~25) стандартных форматов данных, поддерживаемых Clipboard.
Ниже мы рассмотрим порядок обмена данными через Clipboard с точки зрения программиста, а не пользователя.
Передача данных в Clipboard
Вопрос (
Передача данных в Clipboard включает в себя ряд этапов.
Подготовка данных для передачи в Clipboard;
Открытие Clipboard;
Очистка Clipboard;
Посылка данных в Clipboard;
Закрытие Clipboard.
)Вопрос
1. Подготовка данных для передачи в Clipboard;
Посылку данных рассмотрим на примере передачи в Clipboard ASCIIZ - строки.
Вопрос (
1) Выделяем блок динамической памяти:
HGLOBAL GHandle = GlobalAlloc(GMEM_MOVEABLE, strlen(P) + 1);
Где:
HGLOBAL GHandle - ссылка на блок динамической памяти;
P - указатель на передаваемую строку.
2) Фиксируем блок от перемещений на время передачи в него данных и одновременно получаем указатель на блок:
LPTSTR GPtr = (LPTSTR)GlobalLock(GHandle);
Где: GPtr - указатель на блок.
3) Копируем строку в память:
strcpy(GPtr, P);
4) Разрешаем перемещение блока памяти:
GlobalUnlock(GHandle);
)Вопрос
2. Открытие Clipboard
Вопрос (
Открытие Clipboard выполняется вызовом функции
OpenClipboard(),
которая возвращает True, если Clipboard не используется другим приложением. В этом случае возможны последующие действия с Clipboard.
)Вопрос
Вопрос (
3. Очистка Clipboard
Очистка Clipboard выполняется вызовом функции
EmptyClipboard(),
перед засылкой туда новых данных.
4. Посылка данных в Clipboard
Посылка данных в Clipboard заключается в передаче Clipboard ссылки на блок данных с указанием формата этих данных. Эти действия осуществляются с помощью функции:
SetClipboardData(cf_Text, GHandle).
После вызова этой функции Clipboard начинает владеть данными.
5. Закрытие Clipboard
Закрытие Clipboard выполняется вызовом функции
CloseClipboard(),
после которого Clipboard становится доступным другим приложениям.
)Вопрос
Прием данных из Clipboard
Вопрос (
Прием данных из Clipboard включает в себя следующие этапы:
Открытие Clipboard;
Проверка наличия требуемого формата данных в Clipboard;
Чтение данных из Clipboard;
Закрытие Clipboard.
)Вопрос