- •Содержание
- •2 Вопросы для текущего контроля знаний по темам 70
- •Введение
- •1 Разработка приложений с элементами системного программирования на основе использования технологий межпрограммного обмена данными
- •1.1 Лабораторная работа №1. Обмен данными между потоками с использованием сообщения wm_copydata
- •Краткие теоретические сведения
- •1.1.2 Ход выполнения работы
- •1.1.3 Задание на лабораторную работу 1
- •Варианты индивидуального задания
- •1.1.4 Контрольные вопросы к лабораторной работе 1
- •1.2 Лабораторная работа №2. Обмен данными между приложениями с использованием технологии динамического обмена данными – Dynamic Data Exchange (dde)
- •1.2.1 Краткие теоретические сведения
- •Глобальные данные
- •Посылка и прием данных
- •Завершение сеанса
- •Компонент tddeServerConv
- •Компонент tddeServerItem
- •Компонент tddeClientItem
- •1.2.2. Ход выполнения работы
- •1.2.3 Задание на лабораторную работу 2
- •1.2.4 Контрольные вопросы к лабораторной работе 2
- •1.3 Лабораторная работа №3. Обмен данными между приложениями с использованием технологии динамического обмена данными с помощью файлов, отображаемых в память
- •1.3.1 Краткие теоретические сведения Создание объекта файлового отображения
- •Совместное использование отображаемых данных
- •1.3.2 Ход выполнения работы
- •1.3.3 Задание на лабораторную работу 3
- •1.3.4 Контрольные вопросы к лабораторной работе 3
- •1.4 Лабораторная работа №4. Обмен данными между приложениями с использованием технологии динамического обмена данными с помощью сокетов
- •1.4.1 Краткие теоретические сведения Сокеты
- •1.4.2 Ход выполнения работы
- •1.4.3 Контрольные вопросы к лабораторной работе 4
- •1.5 Лабораторная работа №5. Обмен данными между приложениями с использованием технологии динамического обмена данными с помощью именованных каналов
- •1.5.1 Краткие теоретические сведения Каналы
- •1.5.2 Ход выполнения работы
- •1.5.3 Контрольные вопросы к лабораторной работе 5
- •1.6 Лабораторная работа №6. Использование технологии сом при разработке приложений в Delphi. Создание и использование внутреннего сервера
- •1.6.1 Краткие теоретические сведения
- •1.6.2 Ход выполнения работы
- •1.6.3 Контрольные вопросы к лабораторной работе 6
- •2 Вопросы для текущего контроля знаний по темам
- •Список литературы
- •107/2009. Підп. До друку 25.12.09. Формат 60 х 84/8.
- •84313, М. Краматорськ, вул. Шкадінова, 72.
1.1.4 Контрольные вопросы к лабораторной работе 1
-
Какова структура данных сообщения и какие данные содержат ее поля? Что порождает сообщения и какой программный комплекс занимается рассылкой сообщений по очередям? Какие очереди сообщений вы знаете?
-
С помощью каких функций Windows API можно организовать посылку сообщения окну данного потока или окну другого потока? Какие виды сообщений можно послать?
-
Каким образом в Delphi можно организовать обработку нестандартного сообщения (двумя различными методами класса формы)?
-
Зачем регистрировать в системе пользовательские сообщения, которыми будут обмениваться приложения для решения своих задач? С помощью какой функции это делается?
-
Какой максимальный объем данных можно передать с помощью обычного сообщения? Какое сообщение позволяет передавать большие объемы данных?
-
Опишите назначение полей сообщения WM_COPYDATA.
-
Служит ли функция SendMessage для посылки синхронных сообщений потокам?
-
Какие поля содержит структура данных, являющаяся сообщением?
-
Укажите подходы к организации обработки сообщений в программах, разработанных с помощью иерархии классов Delphi.
-
Какая именованная константа используется для обозначения верхней границы зарезервированных операционной системой идентификаторов сообщений?
-
Каков объем данных, которые можно отправить потоку с помощью обычного сообщения?
-
Каков объем данных, которые можно отправить потоку с помощью сообщения WM_COPYDATA?
-
Каков объем данных, расположенных в поле Msg структуры данных сообщения (его идентификаторе)?
1.2 Лабораторная работа №2. Обмен данными между приложениями с использованием технологии динамического обмена данными – Dynamic Data Exchange (dde)
Цель работы: приобрести навыки создания клиентских и пользовательских приложений, осуществляющих обмен различными данными между параллельно работающими приложениями при помощи технологии обмена DDE, основанной на сообщениях.
1.2.1 Краткие теоретические сведения
Динамический обмен данными Data Dynamic Exchange (DDE) - это протокол, поддерживающий передачу данных между приложениями, работающими в среде Windows.
Передача данных между приложениями может осуществляться различными способами. Наиболее часто используется область обмена данными (clipboard). В этом случае говорят о статическом обмене данными: одно приложение помещает данные в область обмена, а затем содержимое этой области может быть использовано другим приложением. Обычно такой обмен данными выполняется при непосредственном участии пользователя.
В тех случаях, когда требуется непосредственный обмен данными между двумя выполняющимися задачами, используется протокол DDE.
Основные принципы DDE
При динамическом обмене данными две программы входят в соглашение об обмене. Одна из программ (запрашивающая данные) становится клиентом, а другая (являющаяся источником данных) сервером.
Сообщения DDE
Протокол DDE основан на использовании 9 сообщениях:
wm_DDE_Initiate Начать сеанс обмена данными
wm_DDE_Terminate Завершить сеанс обмена данными
wm_DDE_Execute Выполнить команду на сервере
wm_DDE_Ack Получить статус операции
wm_DDE_Poke Послать данные серверу
wm_DDE_Request Запросить данные сервера
wm_DDE_Advise Установить связь с сервером
wm_DDE_UnAdvise Завершить связь с сервером
wm_DDE_Data Передать данные клиенту
Формат сообщений
Обычно сеанс динамического обмена данными состоит из посылки ряда сообщений, общая форма которых имеет следующий вид:
PostMessage(hWndReceiver, wm_DDE_XXX, hWndSender, Data);
hWndReceiver - это ссылка на окно программы-клиента, hWndSender - ссылка на окно программы-сервера, wm_DDE_XXX - одно из девяти сообщений DDE. Значение последнего параметра - Data – зависит от типа передаваемого сообщения. Этот параметр может содержать атомы, ссылки на глобальные данные и т.п.
Атомы
Названия приложения (application), темы (topic) и элемента данных (item) представляют собой строки. Такие строки представляются в виде атомов - 16-битных ссылок на таблицу, в которой хранятся эти строки. Существуют локальные атомы, доступные только конкретному приложению, и глобальные атомы, доступные всем приложениям. При передаче строки от одного приложения к другому строка заносится в таблицу глобальных атомов. Атом пересылается с помощью сообщения и получатель извлекает строку из таблицы атомов. Для работы с таблицами атомов могут быть использованы следующие функции:
GlobalAddAtom Создать глобальный атом на основе строки
GlobalDeleteAtom Удалить глобальный атом
GlobalFindAtom Найти атом, соответствующий данной строке
GlobalGetAtomName Скопировать строку, соответствующую данному атому
Также существуют функции для работы с локальными атомами: LocalAddAtom, LocalDeleteAtom, LocalFindAtom и LocalGetAtomName. При использовании атомов следует придерживаться следующего простого правила: программа, посылающая сообщение, должна занести атом в таблицу, а программа, получающая сообщение, должна удалить атом из таблицы.
Ниже приводятся примеры использования функций работы с атомами.
Создание атома:
Var
Topic :TAtom;
Topic:=GlobalAddAtom('SomeTopic');
Поиск атома:
MyAtom:=GlobalFindAtom('SomeTopic');
Получение строки:
Var
Buffer: Array[0..39] of Char;
GlobalGetAtomName(MyAtom, Buffer, SizeOf(Buffer));
Как видно из приведенных примеров, использовать атомы очень просто, но они играют чрезвычайно важную роль при динамическом обмене данными. Мы увидим это позже.