Средства обмена данными между приложениями — КиберПедия 

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

Средства обмена данными между приложениями

2017-11-17 335
Средства обмена данными между приложениями 0.00 из 5.00 0 оценок
Заказать работу

 

Цель работы: практическое знакомство со средствами передачи данных между процессами, (Interprocess Communications-IPC), выполняющимися на одном компьютере.

 

Краткие теоретические сведения

 

В данной работе будут рассмотрены только два метода IPC:

· использование буфера обмена (Clipboard);

· файлы, проецируемые в память.

 

Использование буфера обмена

Буфер обмена (clipboard) в основном используется для удобства пользователей и редко используется как метод IPC. В Delphi для вырезания, копирования и вставки данных используется класс Tclipboard, объявленный в модуле Clipbrd. Данный модуль необходимо добавить в оператор uses.

Класс Tclipboard имеет следующие свойства:

· AsText. Это свойство, имеющее тип String, используется для копирования текста в буфер обмена и вставки его из буфера обмена. Поскольку AsText представляет собой строку Pascal, ее длина ограничена 255 символами. При работе с текстом большего объема следует использовать методы SetTextBuf и GetTextBuf.

В буфере обмена могут находиться данные различных типов. Если буфер обмена содержит текст, выражение Clipboard.HasFormat (cf_Text) соответствует истине.

Для растровой графики используйте тип сf_Bitmap.

· FormatCount. Свойство типа Integer равно количеству элементов в массиве Formats.

· Formats. Массив значений, имеющих тип Word и представляющих собой зарегистрированные форматы данных буфера обмена.

Для копирования графики в буфер обмена следует использовать метод Assign. Например

Clipboard.Assign (Image1.Pictire); // копирование в буфер обмена

Image2.Picture.Assign (Clipboard); // копирование из буфера обмена

 

Использование файлов, проецируемых в память

 

Ниже приведен текст DLL, используемой для создания области в страничном файле, доступ к которой могут иметь несколько процессов.

library ShareHeap;

uses

SysUtils, Classes, Windows;

const MaxSize =1000;

var

hObjHand: Thandle;

pGMem: pointer;

procedure UnmapMemory;

begin

if Assigned (pGMem) then

begin

UnMapViewOfFile (pGMem);

pGmem:= nil;

end;

if hObjHand >0 then CloseHandle (hObjHand);

hObjHand:=0;

end;

procedure MapMemory (dwAllocSize: dword);

begin

hObjHand:=CreateFileMapping(MaxDword, nil,

PAGE_READWRITE,0, dwAllocsize,Pchar('Gmem'));

if (hObjHand = 0) then

Raise Exception.Create('Не создан file-mapping Obj');

pGMem:= MapViewOffile(HobjHand,File_Map_Write,0,0,1);

if not Assigned(pgmem) then

begin

UnMapMemory;

Raise Exception.Create('Could not map file');

end;

end;

procedure DLLMain (dwAct: Dword);

begin

case dwAct of

dll_Process_Attach:

begin

pgMem:= nil;

hObjHand:=0;

MapMemory(MaxSize);

end;

dll_Process_Detach:

UnmapMemory;

end;

end;

// получение блока памяти из страничного файла

function GetBlock: pointer; StdCall;

begin

result:= pGmem;

end;

exports GetBlock;

 

begin

DLLProc:= @DLLMain;

DLLMain (dll_Process_Attach);

end.

 

 

Ниже приведен пример фрагмента текста приложения, использующего функцию GetBlock из библиотеки ShareHeap для передачи строки символов между приложениями.

 

var

pcBuf: Pchar;

 

function GetBlock: pointer; stdcall;

external 'SHAREHEAP.DLL';

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);

begin

pcbuf:= GetBlock;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

edit1.GetTextBuf(pcBuf,Length(Edit1.Text)+1);

// Memo1.SetTextBuf (pcbuf); // timer1.Enabled:=True;

// edit2.SetTextBuf(pcBuf);

end;

procedure TForm1.Timer1Timer(Sender: TObject);

begin

Memo1.SetTextBuf (pcbuf);

// edit2.SetTextBuf(pcBuf); // timer1.Enabled:=false;

end;

 

Порядок выполнения работы

 

1. Написать приложение, выполняющее занесение в буфер обмена текста и графики и приложение, получающее из буфера обмена находящиеся в нем данные.

2. Создать DLL для экспорта функции получения блока данных в страничном файле.

3. Написать приложение для обмена данными с использованием созданной в п.2 функции GetBlock.

 

Отчет о работе

 

Для отчета о работе используются экранные формы разработанных в п.1 и п.3 приложений.

 

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

Реестр и средства работы с реестром

Цель работы: освоение методики и функций Win32 для работы с реестром. Знакомство с компонентом Registry, его свойствами и методами.

 

Структура реестра

Реестр - это база данных, которая является частью операционной системы Windows 9x или NT.

Реестр хранит информацию, используемую для инициализации и конфигурирования приложений и управляет доступом к ней. Все технологии на платформе Windows интенсивно используют реестр.

Реестр Windows 9x состоит из файлов user.dat и system.dat, представляющих собой скрытые файлы, находящиеся в каталоге \Windows. ПЕРЕД началом работы с реестром необходимо сохранить копию этих файлов.

Реестр имеет иерархическую структуру и состоит из разделов и пар параметр-значение. Структура реестра напоминает иерархическую структуру каталогов Windows - разделы можно представлять себе в виде папок, а пары параметр-значение - в виде файлов. Редактор реестра RegEdit - основной инструмент пользователя для манипуляции с реестром, предоставляемый Microsoft.

Разделы

Раздел - это узел структуры реестра. Он состоит из подразделов и пар параметр-значение. Имя подраздела должно быть уникальным внутри его родительского раздела. Для отделения имен родительских разделов от дочерних используется символ \

HKEYs

Разделы HKEYs - это средство доступа к разделам реестра самого верхнего уровня. Они определяются в API реестра и являются точкой входа в дерево реестра. В реестре есть ДВА основных раздела - HKEY_LOCAL_MACHINE и HKEY_USERS (которые хранятся соответствен-но в файлах system.dat и user.dat) и четыре дополнительных раздела.

Пары параметр-значение

Пара параметр-значение - компонент реестра, который непосредственно хранит данные. Используя путь к разделу и имя параметра, можно считать значение из пары параметр-значение.

Значение, находящееся в паре, может иметь один из нескольких типов. Три основных типа данных- двойное слово (DWORD), строка (String) и двоичное значение (Binary).

 

Редактор реестра

Для запуска редактора реестра используется меню Пуск-> Выполнить. В окне имени файла необходимо ввести regedit и нажать ОК. Редактор реестра дает возможность просматривать содержимое реестра, создавать и удалять подразделы и пары параметр-значение, выполнять экспорт-импорт всего реестра или его части.

НИКОГДА НЕ УДАЛЯЙТЕ ПОДРАЗДЕЛЫ и ПАРЫ ПАРАМЕТР_ЗНАЧЕНИЕ, которые ВЫ не создавали!

Редактор реестра поддерживает только три типа данных (перечисленные выше) из 9. Для выполнения операций с данными других типов необходимо использовать функции Win32 API.

 


Поделиться с друзьями:

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

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

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.013 с.