Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
sp.docx
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
213.38 Кб
Скачать

33. Использование файловой системы для обмена данными

X.2.6. Использование сообщения wm_copydata

Структура COPYDATASTRUCT: dwData (просто int), cbData (размер), lpData (буфер этого размера). Передача сообщения обязательно по Send, а не Post.

Х.2.6 Буфер обмена (Clipboard).

Широко применяемый в Windows механизм обмена информацией с использованием специального системного глобального буфера. При этом реализуется модель cut-copy-paste. Любое приложение может поместить данные в буфер обмена и получить данные из него.

BOOL OpenClipboard(hWndNewOwner)

BOOL CloseClipboard(void)

HANDLE GetClipboardData(uFormat)

HANDLE SetClipboardData(uFormat,hMem)

BOOL EmptyClipboard(void)

UINT EnumClipboardFormats(uPrevFormat)

int CountClipboardsFormats(void)

UINT RegisterClipboardFormat(lpszFormatName)

GetClipboardFormatName(uFormat, lpFormatName, int nMaxCount)

Х.2.7 Динамический обмен данными (DDE)

МеханизмDDE (Dynamic Data Exchange), ...

Х.2.8 OLE – Присоединение и внедрение объектов

Механизм (протокол) OLE (ObjectLinkingandEmbedding) был первоначально предназначен для создания составных документов. С его помощью можно, например, вставить таблицу MS Excel в документ MS Word. При этом возможно как вставить таблицу целиком (embedding), так и вставить только ссылку на эту таблицу (linking). В дальнейшем возник также OLEAutomation, служащий для управления приложением из другого приложения. В настоящее время протокол OLE развился до набора технологий, лежащих в основе построения современных информационных систем, например, ActiveX.

Х.2.9 Использование динамически компонуемых библиотек

Если два или более приложений используют одну библиотеку DLL (dynamiclinklibrary, см. ниже), то они разделяют все глобальные переменные этой библиотеки. Глобальные переменные, как и вся библиотека, отображаются на адресные пространства разных процессов. Этот метод не привносит никакой новой функциональности по сравнению с отображением проецируемых файлов. Более того, при этом нарушается идеология "скрытия" данных.

Объявление переменных в DLL как shared либо private. По умолчанию обычно все переменные private.

Х.2.10 Удаленный вызов процедур

Механизм RPC (RemoteProcedureCall) является естественным развитием идеологии процедурного программирования. В рамках его подпрограмма рассматривается как черный ящик с документированными параметрами. Естественно попытаться сделать возможным исполнение этой процедуры на удаленном компьютере. Механизм осуществления этой идеи напоминает использование динамических библиотек: с приложением компонуется не сама процедура, а лишь некоторая заглушка, которая передает по сети параметры процедуры и принимает результат вычислений. У приложения создается иллюзия работы с локальной процедурой. Возможно исполнение процедуры и вызывающей программы под управлением разных операционных систем.

Клиент-сервер. На стороне клиента – заглушка (stub) с соответствующим именем. Задача заглушки клиента – упаковать аргументы и передать на сервера. На стороне сервера – тоже заглушка (serverstub), она же прокси (proxy). Прокси распаковывает аргументы и вызывает нужную серверную функцию.

Как разновидность RPC – очередь сообщений MSMQ. Позволяет осуществлять вызов off-line.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]