ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 11.06.2019

Просмотров: 101

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Лабораторная работа № 6

Студента ИТ 14-1 Красовского Абхая

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

Вариант №9

Цель: Получить навыки в следующих предметных областях:

  • создание и использование блоков разделяемой памяти;

  • открытие и использование буфера обмена (clipboard)



Индивидуальное задание

Реализовать задание взаимодействия процессов и буера обмена.

Код сервера:


#include <windows.h>

#include <conio.h>

#include <iostream>


using namespace std;


void main()

{

setlocale(LC_ALL, "rus");

static HGLOBAL TextCopyBufer;

LPSTR CopyText;

Char ConstText[] = "Этот текст я запишу в универсальный буфер обмена";


// Закажем глобальный блок памяти для нашего текста

TextCopyBufer = GlobalAlloc(GHND, sizeof(ConstText) + 1);

if (TextCopyBufer != NULL)

{

cout << "Глобальный блок памяти заказан" << endl;

// Зафиксируем наш блока памяти

CopyText = (LPSTR)GlobalLock(TextCopyBufer);

if (CopyText != NULL)

{

cout << "Блок памяти зафиксирован" << endl;

// Скопируем текст в блок памяти

lstrcpyA(CopyText, ConstText);

cout << "Текст скопирован в блок памяти" << endl;


// Расфиксируем наш блок памяти

GlobalUnlock(TextCopyBufer);

cout << "Блок памяти расфиксирован" << endl;


// Откроем и очистим буфер обмена

OpenClipboard(0);

EmptyClipboard();

cout << "Буфер обмена открыт и очищен" << endl;


// Запишем текст в буфер обмена

SetClipboardData(CF_TEXT, TextCopyBufer);

cout << "В буфер обмена скопирован текст" << endl;


// Закрываем буфер обмена

CloseClipboard();

cout << "Буфер обмена закрыт" << endl;

}

else

MessageBoxA(0, "Мало памяти", "Server", MB_OK);

}

else

MessageBoxA(0, "Мало памяти", "Server", MB_OK);

_getch();

}



Код клиента:

#include <windows.h>

#include <conio.h>

#include <iostream>


using namespace std;


void main()

{

setlocale(LC_ALL, "rus");

static HGLOBAL ClipTextBufer;

LPSTR ClipText;


OpenClipboard(0);

cout << "Открыт буфер обмена" << endl;

ClipTextBufer = GetClipboardData(CF_TEXT);

cout << " Получаем идентификатор блока памяти,содержащего текстовые данные Clipboard" << endl;

ClipText = (LPSTR)GlobalLock(ClipTextBufer);

cout << "Фиксируем блок памяти и читаем сообщение из буфера обмена" << endl;


cout << "Наше сообщение: " << ClipText << endl;


GlobalUnlock(ClipTextBufer);

cout << "Блок памяти расфиксирован" << endl;


CloseClipboard();

cout << "Буфер обмена закрыт" << endl;


_getch();

}


Р езультат:
























Смотрите также файлы