Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка ТВП ЛР A5.doc
Скачиваний:
0
Добавлен:
31.12.2019
Размер:
611.84 Кб
Скачать

Пример приложения, использующего передачу сообщений между процессами

Рассмотрим реализацию клиентской части приложения (отправителя):

HWND hWnd; //Идентификатор главного окна приложения - отправителя

HWND hWndServer; // Идентификатор главного окна приложения - получателя

COPYDATASTRUCT cd; // Структура для передачи данных между процессами

char szBuf[80]; // Буферы для передаваемых данных

// Записываем адрес и размер строки в структуру типа COPYDATASTRUCT

cd.lpData=szBuf;

cd.cbData=strlen(szBuf) + 1;

// Посылаем сообщение серверному приложениию-получателю

SendMessage(hWndServer, WM_COPYDATA,(WPARAM)hWnd, (LPARAM)&cd);

Реализацию серверной части приложения (получателя). сводится к получению и обработке сообщения WM_COPYDATA. В качестве примера рассмотрим обработчик, осуществляющий вывод на экран полученной информации:

LRESULT WINAPI

WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)

{ char szBuf[80]; // Буферы для передаваемых данных switch(msg)

{ case WM_COPYDATA:

{ // Копируем полученные данные во внутренний буфер

strcpy(szBuf, ((PCOPYDATASTRUCT)lParam)->lpData);

printf(szBuf,%s);

break;

}

HANDLE_MSG(hWnd, WM_CREATE, WndProc_OnCreate); HANDLE_MSG(hWnd, WM_DESTROY, WndProc_OnDestroy);

HANDLE_MSG(hWnd, WM_PAINT, WndProc_OnPaint);

default:

return(DefWindowProc(hWnd, msg, wParam, lParam));

}

}

  1. Номер варианта

Последняя цифра зачетной книжки

0

1

2

3

4

5

6

7

8

9

Номер варианта

8

3

4

1

6

7

9

7

5

10

  1. Варианты заданий

Номер варианта

Способ взаимодействия процессов

1

Взаимодействие посредством механизма отображения файлов на память: совместное использование двумя процессами виртуальной памяти;

2

Взаимодействие посредством анонимного канала Pipe;

3

Взаимодействие посредством канала передачи данных Mailslot;

4

Взаимодействие посредством сообщения WM_COPYDATA;

5

Взаимодействие посредством механизма отображения файлов на память: совместное использование двумя процессами виртуальной памяти;

6

Взаимодействие посредством сообщения WM_COPYDATA;

7

Взаимодействие посредством механизма отображения файлов на память: совместное использование двумя процессами одного и того же файла;

8

Взаимодействие посредством именованного канала Pipe;

9

Взаимодействие посредством канала передачи данных Mailslot;

10

Взаимодействие посредством сообщения WM_COPYDATA;

СОДЕРЖАНИЕ

Введение 1

Лабораторная работа №1 2

«Разработка и исследование мультизадачных приложений в операционных системах Microsoft Windows» 2

Лабораторная работа №2 18

«Синхронизация задач в операционных системах 18

Microsoft Windows» 18

Лабораторная работа №3 43

«Передача данных между процессами в операционных системах Microsoft Windows» 43

96