Обмен данными между приложениями ms windows dynamic data exchange dde обеспечивается

Работа по теме: АСУП. Конспект лекций. Глава: Технология динамического обмена данными dde. ВУЗ: СЛИ.

DDE (Dynamic Data Exchange —
динамический обмен данными) представляет
собой коммуникационный протокол,
разработанный компанией Microsoft для обмена
данными между различными Windows-приложениями
и их синхронизации. Для нормального
функционирования DDE необходимо два
участника – приложение, запрашивающее
данные, и приложение, посылающее данные.
Приложение, запрашивающее данные,
называется клиентом. Приложение,
посылающее данные, называется сервером.

Клиент
DDE
.
В качестве приложения клиента может
выступать любое приложение, позволяющее
осуществлять DDE-запросы к DDE-серверу. В
качестве примера приложения, обладающего
возможностями DDE-клиента, можно привести
электронную таблицу Microsoft Excel, позволяющую
в качестве формулы в какой-либо ячейке
устанавливать запрос с автообновлением
данных к указываемому DDE-серверу.

Сервер
DDE
.
Приложение, обеспечивающее возможности
сервера, должно “уметь” принимать DDE
сообщения и посылать данные в ответ на
запросы приложений-клиентов. У одного
DDE-сервера может быть один или несколько
DDE-клиентов.

Сеанс
DDE

активная непрерывная связь между
клиентом и сервером.

Транзакция
DDE

– одиночный акт обмена данными в процессе
сеанса.

В DDE используется
трёхуровневая система адресации: service
(зарегистрированный сервис, как правило,
указывается приложение, предоставляющее
серверные функции); topic
(раздел данных, например, имя файла, или
таблица базы данных); item (элемент данных,
подлежащий передаче).

Если в качестве
сервера DDE выступает MS Excel, эта схема
выглядит следующим образом: service –
«EXCEL»; topics – электронная таблица
«[Книга1]Лист1»; item –ячейка «R1C2».

Поскольку Windows
базируется на архитектуре, использующей
сообщения, то наиболее подходящим
методом для автоматической передачи
данных между прикладными программами
является посылка сообщений. Все транзакции
выполняются с помощью передачи между
программами клиентом и сервером DDE
сообщений:

WM_DDE_INITIATE –
инициализирует диалог между прикладными
программами сервера и клиента;

WM_DDE_ACK
– посылается в ответ на полученное
сообщение;

WM_DDE_REQUEST – запрашивает
у сервера значение элемента данных;

WM_DDE_POKE – посылает
значение элемента данных серверу;

WM_DDE_ADVISE –
устанавливает постоянную связь между
сервером и клиентом;

WM_DDE_DATA – посылает
значение элемента данных клиенту;

WM_DDE_EXECUTE – посылает
строку прикладной программе-серверу,
которая должна выполнить ее как
последовательность команд;

WM_DDE_UNADVISE – завершает
постоянную связь между сервером и
клиентом;

WM_DDE_TERMINATE
– завершает
диалог.

Посылка сообщений
– это нижний уровень обмена данными
между DDE-клиентом
и DDE-сервером.
На верхнем уровне DDE-обмен
реализован в виде функций, содержащихся
в динамической библиотеке DDEML.DLL.

Технология
DDE
удобна для взаимодействия между такими
приложениями как MS
Excel
– MS
Word
и т.п. Однако при высоком потоке передачи
данных этот механизм не очень подходит
вследствие низкой надежности и низкой
скорости передачи сообщений. Для
SCADA–систем
имеются модификации: пакетированный
DDE-обмен — FastDDE.
Применение последнего заметно повышает
эффективность и производительность
обмена данными благодаря уменьшению
общего количества DDE-пакетов, которыми
клиент и сервер обмениваются между
собой. Но принципиальные недостатки,
связанные с надежностью и зависимостью
от количества загруженных в текущий
момент приложений Windows, остались.

С целью расширения
возможностей стандартного протокола
DDE на локальную сеть предложен NetDDE. Он
позволяет приложениям, запущенным на
компьютерах, объединенных в локальную
сеть, вести DDE-обмен.

Обмен
по DDE в
TRACE
MODE
6

Исполнительыне
модули TRACE
MODE
6 (МРВ) поддерживают обмен по DDE/NetDDE между
собой и с приложениями WINDOWS, выступая
одновременно в качестве сервера и
клиента. Клиент инициирует обмен с
сервером и задает один из следующих
режимов обмена:

  • POKE
    – изменение
    значения указанного параметра на
    сервере;

  • REQUEST

    запрос значения указанного параметра
    от сервера;

  • ADVISE

    режим, при котором сервер посылает
    клиенту значение указанного параметра
    при его изменении.

Excel
(
DDE-клиент)
– МРВ (DDE-сервер)

Если клиентом DDE
является Excel, то DDE-обмен с МРВ может быть
сконфигурирован с помощью: формул Excel;
макросов VBA. Формула Excel может быть
использована для запроса реального
значения канала в режиме ADVISE или REQUEST.
Запрос значений всех других атрибутов
канала проводится только в режиме
REQUEST.

Формат
формулы
EXCEL: =<server>|<topic>!<item>

server
– имя сервера
в формате RTM<k>,
где k –
индивидуальный номер узла;

topic
– тема запроса
(GET
– для режима ADVISE,
PUT
– для режима REQUEST);

item
– имя канала
или уточненное имя атрибута в формате:
<имя
канала>.<номер атрибута>
.

Примеры:

=RTM0|GET!Канал1
вызов реального значения канала КАНАЛ1
в режиме ADVISE;

=RTM0|PUT!Канал1.0
вызов реального значения (атрибут № 0)
канала КАНАЛ1 в режиме REQUEST;

=RTM|PUT!Канал1.45
вызов значения атрибута «время
последнего изменения реального значения»
(атрибут № 45) для канала КАНАЛ1 в режиме
REQUEST.

{DDEAuto
RTM0
GET
Канал1} вызов реального значения канала
КАНАЛ1 в режиме ADVISE
в поле MS
WINWORD.

Через макросы VBA
доступны режимы REQUEST
и POKE.
Для обмена с помощью макросов VBA
используются функции:

Channel
:= DDEInitiate(App,
Topic)
– установка диалога по заданным сервису
и теме;

DDETerminate(Channel)
– прекращение
диалога;

Data :=
DDERequest(Channel,
Item)
– запрос
данных;

DDEPoke(Channel,
Item,
Data)
– передача
данных
серверу;

DDEExecute(Channel,
String)
– передача
команды
другому
приложению.

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

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Динамический обмен данными

Из Википедии, бесплатной энциклопедии

Перейти к навигации
Перейти к поиску

В вычислении , динамический обмен данных ( DDE ) представляет собой технология для межпроцессного взаимодействия , используемого в ранних версиях Microsoft Windows и OS / 2 . DDE позволяет программам манипулировать объектами, предоставленными другими программами, и реагировать на действия пользователя, влияющие на эти объекты. DDE был частично заменен Object Linking and Embedding (OLE) и в настоящее время поддерживается в системах Windows только ради обратной совместимости .

История и архитектура

Динамический обмен данными был впервые представлен в 1987 году с выпуском Windows 2.0 как метод межпроцессного взаимодействия, чтобы одна программа могла взаимодействовать с другой программой или управлять ею, что-то вроде Sun RPC (Remote Procedure Call). [1] В то время единственным способом связи между операционной системой и клиентскими приложениями был «Уровень обмена сообщениями Windows». DDE расширил этот протокол, чтобы разрешить одноранговую связь между клиентскими приложениями посредством широковещательной рассылки сообщений.

Поскольку DDE работает через широковещательную рассылку сообщений, он уязвим для любого кода управления окнами, который не перекачивает сообщения . Эта проблема не рассматривалась при разработке DDE, потому что DDE предшествует упреждающей многозадачности . [2]

Более того, любой код, управляющий дескриптором окна, может отвечать на широковещательную рассылку DDE; инициатор DDE должен различать ожидаемые и неожиданные ответы. Собеседники DDE обычно выражают, какую информацию они ищут, в терминах иерархических строковых ключей. Например, ячейка в Microsoft Excelбыл известен DDE под своим «прикладным» именем. Каждое приложение может дополнительно систематизировать информацию по группам, известным как «темы», и каждая тема может обслуживать отдельные фрагменты данных как «элемент». Например, если пользователь хочет получить значение из Microsoft Excel, которое содержится в электронной таблице с именем «Book1.xls» в ячейке в первой строке и первом столбце, приложение будет «Excel», тема «Book1». xls »и элемент« r1c1 ». Внутренние изменения в ячейке из-за действий Excel затем будут сигнализироваться (в обратном порядке) вызывающему приложению через дополнительные широковещательные сообщения.

Отношение к современным технологиям автоматизации

Обычно DDE используется в специально разработанных приложениях для управления стандартным программным обеспечением. Например, собственное пользовательское приложение может использовать DDE, чтобы открыть электронную таблицу Microsoft Excel и заполнить ее данными, открыв диалог DDE с Excel и отправив ему команды DDE. Эта функция была в основном заменена набором технологий компонентной объектной модели . Microsoft не использовала DDE для внутренних целей с момента выпуска Windows 95 . [3] Например, Excel теперь предоставляет расширенную объектную модель OLE Automation , которая является рекомендуемым методом взаимодействия с Excel. Однако этот метод все еще используется, особенно для распространения финансовых данных. [4]Поскольку DDE не требует большего количества компонентов операционной системы, чем обычная программа с графическим интерфейсом Windows , это также [малоиспользуемая] альтернатива для программ, стремящихся минимизировать свои зависимости .

NetDDE

Wonderware разработала расширение для DDE под названием NetDDE, которое можно использовать для инициирования и поддержания сетевых подключений, необходимых для DDE-диалогов между DDE-совместимыми приложениями, работающими на разных компьютерах в сети, и прозрачного обмена данными. Диалог DDE — это взаимодействие между клиентскими и серверными приложениями. NetDDE можно использовать вместе с DDE и библиотекой управления DDE (DDEML) в приложениях.

/Windows/SYSTEM32
    DDESHARE.EXE (DDE Share Manager)
    NDDEAPIR.EXE (NDDEAPI Server Side)
    NDDENB32.DLL (Network DDE NetBIOS Interface)
    NETDDE.EXE (Network DDE - DDE Communication)


Файлы библиотеки NetDDE

Microsoft лицензировала базовую ( только для NetBIOS Frames ) версию продукта для включения в различные версии Windows от Windows for Workgroups до Windows XP . Вдобавок Wonderware также продала своим клиентам улучшенную версию NetDDE, которая включала поддержку TCP / IP . Технология широко используется в области SCADA . Основными приложениями Windows, использующими NetDDE, являются Clipbook Viewer , WinChat и Microsoft Hearts .

NetDDE по-прежнему входил в состав Windows Server 2003 и Windows XP Service Pack 2, хотя по умолчанию он был отключен. Он был полностью удален в Windows Vista . [5] Однако это не предотвратит установку и работу существующих версий NetDDE в более поздних версиях Windows.

См. Также

  • ActiveX
  • Компонентно-объектная модель (COM)
  • Распределенная объектная модель компонентов (DCOM)
  • Microsoft .NET
  • Образец наблюдателя

Ссылки

  1. ^ «Net DDE для удаленного взаимодействия DOT NET» . 2006-01-12. Архивировано из оригинала на 2010-11-11.
  2. Chen, Raymond (27 июня 2005 г.). «Почему в Windows есть механизмы на основе широковещания?» . Старая новая вещь . Архивировано из оригинального 16 декабря 2009 года.
  3. Chen, Raymond (26 февраля 2007 г.). «Пожалуйста, прекратите использовать DDE» . Старая новая вещь . Архивировано из оригинального 15 марта 2019 года.
  4. ^ Джоэл Спольски — комментарий на дискуссионном форуме Fog Creek Software
  5. ^ NetDDE удален из Windows Vista.

Источники

  • Чарльз Петцольд . «Динамический обмен данными» в программировании для Windows 95 . Microsoft Press.

Внешние ссылки

  • MSDN: О динамическом обмене данными (DDE)
  • NetDDE
  • Привязки Clojure для DDE, для использования в приложениях Clojure или Java

Категории :

  • Межпроцессного взаимодействия
  • Интерфейсы прикладного программирования Microsoft
  • Связь и службы Windows

Эта статья является частью серии «Fileless Malware». Все остальные части серии:

  • Приключения неуловимой малвари, часть I
  • Приключения неуловимой малвари, часть II: скрытные VBA-скрипты
  • Приключения неуловимой малвари, часть III: запутанные VBA-скрипты для смеха и прибыли
  • Приключения неуловимой малвари, часть IV: DDE и поля документа Word (мы тут)

В этой статье я собирался погрузиться в еще более сложный многоэтапный cценарий безфайловой атаки с закреплением в системе. Но тут я наткнулся на невероятно простую атаку без кода — не требуется никаких макросов Word или Excel! И это гораздо более эффективно доказывает мою изначальную гипотезу, лежащую в основе этой серии статей: преодолеть внешний периметр любой организации – совсем несложная задача.

Первая атака, которую я опишу, использует уязвимость Microsoft Word, которая основана на устаревшем протоколе динамического обмена данными (DDE). Она уже была исправлена. Вторая использует более общую уязвимость в Microsoft COM и возможности передачи объектов.

Назад в будущее с DDE

Кто-нибудь еще помнит DDE? Вероятно, немногие. Это был один из первых протоколов взаимодействия между процессами, который позволял приложениям и устройствам передавать данные.

Я сам немного знаком с ним, потому что раньше я проверял и тестировал телеком-оборудование. В то время DDE позволял, например, передавать для операторов колл-центров идентификатор звонящего абонента в CRM приложение, которое в конечном итоге открывало карточку клиента. Для этого вы должны были подключить кабель RS-232 между телефоном и компьютером. Вот были деньки!

Как оказалось, Microsoft Word все еще поддерживает DDE.

Что делает эту атаку эффективной без кода, так это то, что вы можете получить доступ к протоколу DDE непосредственно из автоматических полей документа Word (снимаю шляпу перед SensePost за исследования и публикации об этом).

Коды полей – это еще одна древняя функция MS Word, которая позволяет добавлять динамический текст и немного программирования в документ. В качестве самого очевидного примера можно привести поле «номер страницы», который можно вставить в нижний колонтитул с помощью значения {PAGE *MERGEFORMAT}. Это позволяет автоматическим образом генерировать номера страниц.

Подсказка: вы сможете найти пункт меню Полe (Field) в разделе Вставка (Insert)

Я помню, что когда впервые обнаружил эту возможность в Word, то был поражен. И вот пока патч не отключил ее, Word так и поддерживал параметр полей DDE. Идея состояла в том, что DDE позволит Word общаться с приложением напрямую, для возможности затем передать выходные данные программы в документ. Это была совсем юная технология в то время – поддержка обмена данными с внешними приложениями. Позже она была развита в технологии COM, которую мы также рассмотрим ниже.

В итоге, хакеры поняли, что этим приложением DDE может быть командная оболочка, которая, конечно же, запускает PowerShell, а оттуда хакеры могут делать всё, что им угодно.
На скриншоте ниже видно, как я использовал данную скрытную технику: маленький сценарий PowerShell (далее – PS) из поля DDE загружает другой PS скрипт, который запускает вторую фазу атаки.

Спасибо Windows за всплывающее предупреждение, о том что встроенное поле DDEAUTO скрытно пытается запустить оболочку

Предпочтительным методом эксплуатации уязвимости является использование варианта с полем DDEAUTO, которое автоматически запускает сценарий при открытии документа Word.
Давайте подумаем, что с этим можно сделать.

Как начинающий хакер, вы можете, например, отправить фишинговое письмо, притворившись, что вы из ФНС, и встроить поле DDEAUTO со скриптом PS для первого этапа (дроппер по сути). Причем вам даже не нужно делать никакого реального кодирования макросов и пр., как я это делал в предыдущей статье.
Жертва открывает ваш документ, встроенный скрипт активируется, и хакер оказывается внутри компьютера. В моем случае удаленный сценарий PS лишь печатает сообщение, но он может также легко запустить клиент PS Empire, который предоставит удаленный доступ к оболочке.
И прежде, чем жертва успеет произнести хоть что-то, хакеры окажутся самыми богатыми подростками на селе.

Оболочка была запущена без малейшего кодирования. Даже ребенок сможет это сделать!

DDE и поля

Позже Microsoft все-таки отключила DDE в Word, но перед этим компания заявила, что эта функция была просто неправильно использована. Их нежелание что-то менять понятно. Из своего опыта я сам наблюдал такой пример, что обновление полей при открытии документа было включено, но макросы Word были отключены ИТ-службой (но с показом уведомления). Кстати, соответствующие параметры вы сможете найти в разделе настроек Word.

Однако, даже если обновление полей включено, Microsoft Word дополнительно уведомляет пользователя, когда поле запрашивает доступ к удаленным данным, как в случае с DDE выше. Microsoft действительно предупреждает вас.

Но скорее всего, пользователи все равно пропустят это предупреждение и активируют обновление полей в Word. Это одна из редких возможностей поблагодарить Microsoft за отключение опасной функции DDE.

Насколько трудно сегодня найти непропатченную систему Windows?

Для этого тестирования я использовал среду AWS Workspaces для получения доступа к виртуальному рабочему столу. Таким образом я получил непропатченную виртуальную машину с MS Office, которая позволила мне вставить поле DDEAUTO. Не сомневаюсь, что подобным же образом можно найти и другие компании, которые до сих пор не установили нужные патчи безопасности.

Тайна предметов

Даже если вы и установили этот патч, есть другие дыры безопасности в MS Office, которые позволяют хакерам выполнять что-то очень похожее на то, что мы сделали с Word. В следующем сценарии мы научимся использовать Excel в качестве наживки для фишинговой атаки без написания кода.

Чтобы понять этот сценарий, давайте вспомним Модель компонентного объекта Microsoft, или сокращенно COM (Component Object Model).

COM существует с 1990-х годов, и определяется как «нейтральная к языку программирования объектно-ориентированная модель компонентов» на основе удаленных вызовов процедур RPC. Для общего понимания терминологии COM прочтите этот пост на StackOverflow.

По большому счету, вы можете представить приложение COM как исполняемый файл Excel или Word, или какой-либо другой запускаемый бинарный файл.

Оказывается, COM-приложение также может запускать сценарий — JavaScript или VBScript. Технически это называется скриптлет. Возможно, вы встречали расширение.sct у файлов в Windows – это и есть официальное расширение для скриплетов. По сути, они являются кодом скрипта, заключенного в XML обертку:

<?XML version="1.0"?>

<scriptlet>
<registration
description="test"
progid="test"
version="1.00"
classid="{BBBB4444-0000-0000-0000-0000FAADACDC}"
remotable="true">
</registration>
<script language="JScript">
<![CDATA[

var r = new ActiveXObject("WScript.Shell").Run("cmd /k powershell -c Write-Host You have been scripted!");

]]>
</script>
</scriptlet>

Хакеры и пентестеры обнаружили, что есть отдельные утилиты и приложения в Windows, которые принимают COM-объекты и, соответственно, скриптлеты тоже.

Я могу передать скриптлет в утилиту Windows, написанную на VBS, известную как pubprn. Она находится в недрах C:Windowssystem32Printing_Admin_Scripts. Кстати, есть и другие утилиты Windows, которые принимают объекты в качестве параметров. Для начала рассмотрим этот пример.

Вполне естественно, что оболочку можно запустить даже из сценария печати. Вперед, Microsoft!

В качестве тестирования я создал простой удаленный скриптлет, который запускает оболочку и печатает забавное сообщение «Вас только что проскриптовали!». По сути, pubprn создает экземпляр объекта scriptlet, позволяя коду VBScript запустить оболочку. Данный метод предоставляет явные преимущества хакерам, которые хотят незаметно проникнуть и спрятаться в вашей системе.

В следующем посте я объясню, как скриптлеты COM могут быть использованы хакерами с помощью таблиц Excel.

Вам в качестве домашней работы – посмотреть это видео с Derbycon 2016 года, которое объясняет, как именно хакеры использовали скриптлеты. А также прочитать эту статью про скриптлеты и какой-то моникер.

В вычислениях, Dynamic Data Exchange (DDE ) — это технология для межпроцессного взаимодействия использовался в ранних версиях Microsoft Windows и OS / 2. DDE позволяет программам манипулировать объектами, предоставленными другими программами, и реагировать на действия пользователя, влияющие на эти объекты. DDE был частично заменен Object Linking and Embedding (OLE) и в настоящее время поддерживается в системах Windows только для обратной совместимости.

Содержание

  • 1 История и архитектура
  • 2 Связь с современными технологиями автоматизации
  • 3 NetDDE
  • 4 См. Также
  • 5 Ссылки
  • 6 Источники
  • 7 Внешние ссылки

История и архитектура

Динамический обмен данными был первым введена в 1987 году с выпуском Windows 2.0 как метод межпроцессного взаимодействия, чтобы одна программа могла взаимодействовать с другой программой или управлять ею, что-то вроде Sun RPC ( Удаленный вызов процедур). В то время единственным способом связи между операционной системой и клиентскими приложениями был «Уровень обмена сообщениями Windows». DDE расширил этот протокол, чтобы разрешить одноранговую связь между клиентскими приложениями посредством широковещательной рассылки сообщений.

Поскольку DDE запускается посредством широковещательной рассылки сообщений, он уязвим для любого кода управления окнами, который этого не делает. Эта проблема не рассматривалась при разработке DDE, поскольку DDE предшествует упреждающей многозадачности.

Более того, любой код, управляющий дескриптором окна, может отвечать на широковещательную передачу DDE; инициатор DDE должен различать ожидаемые и неожиданные ответы. Собеседники DDE обычно выражают, какую информацию они ищут, в терминах иерархических строковых ключей. Например, ячейка в Microsoft Excel была известна DDE по имени «приложения». Каждое приложение может дополнительно систематизировать информацию по группам, известным как «темы», и каждая тема может обслуживать отдельные фрагменты данных как «элемент». Например, если пользователь хочет получить значение из Microsoft Excel, которое содержится в электронной таблице с именем «Book1.xls» в ячейке в первой строке и первом столбце, приложение будет «Excel», тема «Book1». xls »и элемент« r1c1 ». Затем внутренние изменения в ячейке из-за действий Excel будут передаваться (в обратном порядке) вызывающему приложению через дополнительные широковещательные сообщения.

Связь с современными технологиями автоматизации

Обычно DDE используется для приложений, разработанных на заказ, для управления готовым программным обеспечением. Например, собственное пользовательское приложение может использовать DDE для открытия электронной таблицы Microsoft Excel и заполнения ее данными, открыв диалог DDE с Excel и отправив ему команды DDE. Эта функция в основном заменена набором технологий объектной модели компонентов. Microsoft не использовала DDE для внутренних целей с момента выпуска Windows 95. Например, Excel теперь предоставляет обширную объектную модель OLE Automation, которая является рекомендуемым методом взаимодействия с Excel. Однако этот метод все еще используется, особенно для распространения финансовых данных. Поскольку для DDE не требуется больше компонентов операционной системы, чем для обычной программы Windows GUI, это также [малоиспользуемая] альтернатива для программ, стремящихся минимизировать свои зависимости.

NetDDE

Wonderware разработал расширение для DDE под названием NetDDE, которое можно было использовать для инициирования и поддержания сетевых подключений, необходимых для DDE-диалогов между DDE-совместимыми приложениями, работающими на разных компьютерах в сети, и прозрачного обмена данными. Диалог DDE — это взаимодействие между клиентскими и серверными приложениями. NetDDE можно использовать вместе с DDE и библиотекой управления DDE (DDEML) в приложениях.

/Windows/SYSTEM32. DDESHARE .EXE (диспетчер общих ресурсов DDE). NDDEAPIR .EXE (сторона сервера NDDEAPI). NDDENB32 .DLL (сетевой интерфейс DDE NetBIOS). NETDDE .EXE (сетевой DDE - связь DDE). Файлы библиотеки NetDDE

Microsoft лицензировала базовую (NetBIOS Протокол кадров только) версия продукта для включения в различные версии Windows от Windows для рабочих групп до Windows XP. Вдобавок Wonderware также продала своим клиентам улучшенную версию NetDDE, которая включала поддержку TCP / IP. Технология широко используется в области SCADA. Основными приложениями Windows, использующими NetDDE, являются Clipbook Viewer, WinChat и Microsoft Hearts.

NetDDE все еще входил в состав Windows Server 2003 и Windows. XP Service Pack 2, хотя по умолчанию он отключен. Он был полностью удален в Windows Vista. Однако это не помешает установке и работе существующих версий NetDDE в более поздних версиях Windows.

См. Также

  • ActiveX
  • Component Object Model (COM)
  • Distributed Component Object Model (DCOM)
  • Microsoft.NET
  • Шаблон наблюдателя

Ссылки

Источники

  • Чарльз Петцольд. «Динамический обмен данными» в программировании для Windows 95. Microsoft Press.

Внешние ссылки

  • MSDN: О динамическом обмене данными (DDE)
  • NetDDE
  • Привязки Clojure для DDE, для использования в приложениях Clojure или Java

Аннотация: Рассматривается DDE — динамический обмен данными и следующий этап разработки в области обмена данными — OLE. Особый интерес представляет практическая работа 44 — передача данных между приложениями Access и Excel. Приводятся две практические работы, относящиеся к области ActiveX — технологии, обеспечивающей эффективную работу приложений типа клиент- сервер.

Продукты корпорации Microsoft поддерживают протокол динамического обмена данными — DDE (протокол — правила при коммуникациях). С использованием папки обмена CLIPBRD.EXE выполняются DDE-связи в компьютерной сети (стартует сетевая DDE-служба), при этом данные должны быть сделаны доступными — должен быть реализован общий доступ. В процессе обмена данными устанавливаются связи между папками обмена удалeнных компьютеров; данные буфера обмена должны находиться на страницах папки обмена. Такая связь может быть реализована и средствами Visual Basic. Приложения могут выполнять как роль клиента, запрашивающего и принимающего данные, так и роль сервера — источника данных.

Технология обмена данными между приложениями развита до такого уровня, что данные не нужно заново копировать — они после их изменения автоматически передаются через DDEсвязь. OLE — следующий этап разработок в области обмена данных. Это технология связи программ, обеспечивающая приложениям совместное использование данных. Технология OLE поддерживается с помощью внедрённых и связанных объектов. Развитие OLE — это технология ActiveX.

DDE

Рассмотрим примеры использования Microsoft Access в роли сервера DDE для приложения-клиента, запрашивающего и принимающего даные по каналу связи DDE. Сеанс связи начинается с открытия канала связи; при этом используется функция DDEInitiate, в аргументе которой перечисляются: имя приложения (база данных Access), имя файла базы данных, имя таблицы; пример: intChan1 = DDEInitiate(«MSAccess», «C:WinntProfilesAdministratordde6;TABLE dde1»)

После этого становится возможной передача данных в другое приложение по этому каналу. Для передачи требования на пересылку, например, текстовых данных из приложения-сервера по открытому каналу DDE используется функция DDERequest, в аргументе которой указывается номер канала связи и сформулирован запрос, пример: strResp1 = DDERequest(intChan1, «All»). После окончания передачи данных нужно вызвать в приложении-клиенте функцию DDETerminate для закрытия текущего канала обмена или функцию DDETerminateAll для закрытия всех каналов связи.

Практическая работа 40. DDE

40а. DDE. Простейший пример обмена данными

Задание: записать в файл результат запроса к данным таблицы базы данных (Access).

Порядок выполнения:

  1. создать базу данных (здесь — dde6), таблицу (здесь — dde1), сделать запрос, закрыть приложение Access,
  2. создать макрос в приложении Word, код макроса дан ниже,
  3. стартовать макроc; в результате его выполнения стартует закрытое ранее приложение Access,
  4. открыть файл dde61.txt (в редакторе Блокнот).
Sub dde6()' макрос в приложении Word,
Dim intChan1 As Integer ' канал связи
Dim strResp1 As Variant ' требование на запрос
' открыть канал связи
intChan1 = DDEInitiate("MSAccess",_
"C:WinntProfilesAdministratordde6;TABLE dde1")
strResp1 = DDERequest(intChan1, "All") ' требование на запрос
DDETerminate intChan1 ' закрыть текущий канал связи
Open "dde61.txt" For Output As #1 ' открыть файл для записи
Write #1, strResp1 ' записать результат запроса
Close #1 ' закрыть файл
End Sub

Содержимое полученного файла dde61.txt — это результат запроса («All»): вывести всeсодержимое таблицы базы данных, рис. 6.1.

Простейший пример DDE; данные, выводимые в файл

Рис.
6.1.
Простейший пример DDE; данные, выводимые в файл

40в. DDE

Приводится аналогичный пример; создаются 4 таблицы: student, (рис. 6.2, рис. 6.3) stipendija, sessija, prikaz; выполняются 4 запроса (рис. 6.4, рис. 6.5), создается макрос в приложении Word (см. код, данный ниже), открываются 4 канала связи, результаты 4-х запросов по 4-м каналам связи выводятся в файлы dde621 — dde624. Пояснения к коду макроса:

  • All — вывести все данные из таблиц, включая имена полей,
  • FildNames,T — вывести список из 2-х строк, содержащий имена полей (первая строка) и их типы данных (вторая строка).
Sub dde62() ' макрос в приложении Word
Dim intChan1 As Integer, intChan2 As Integer, intChan3 As Integer
Dim intChan4 As Integer, strResp1 As Variant, strResp2 As Variant
Dim strResp3 As Variant, strResp4 As Variant
intChan1 = DDEInitiate("MSAccessquot;, quot;A:nin;TABLE Studentquot;)
intChan2 = DDEInitiate(quot;MSAccessquot;, quot;A:nin;TABLE Stipendiumquot;)

Таблица Pruefung

Рис.
6.2.
Таблица Pruefung

Результат запроса

Рис.
6.5.
Результат запроса

intChan3 = DDEInitiate("MSAccess", "A:nin;TABLE Pruefung")
intChan4 = DDEInitiate("MSAccess", "A:nin;QUERY Befehl")
strResp1 = DDERequest(intChan1, "All")
strResp2 = DDERequest(intChan2, "All")
strResp3 = DDERequest(intChan3, "FieldNames;T")
strResp4 = DDERequest(intChan4, "All")
DDETerminate intChan1: DDETerminate intChan2
DDETerminate intChan3: DDETerminate intChan4
Open "dde621.txt" For Output As #1
Write #1, strResp1
Close #1
Open "dde622.txt" For Output As #1
Write #1, strResp2
Close #1
Open "dde623.txt" For Output As #1
Write #1, strResp3
Close #1
Open "dde624.txt" For Output As #1
Write #1, strResp4
Close #1
End Sub

Понравилась статья? Поделить с друзьями:
  • Обмен данными между компьютерами windows 10
  • Обмен данными в windows назначение буфера обмена
  • Обложки для проигрывателя windows media windows 10
  • Обложки для windows media player windows 7
  • Облако майл ру клиент для windows