История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...
Топ:
Генеалогическое древо Султанов Османской империи: Османские правители, вначале, будучи еще бейлербеями Анатолии, женились на дочерях византийских императоров...
Теоретическая значимость работы: Описание теоретической значимости (ценности) результатов исследования должно присутствовать во введении...
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного хозяйства...
Интересное:
Инженерная защита территорий, зданий и сооружений от опасных геологических процессов: Изучение оползневых явлений, оценка устойчивости склонов и проектирование противооползневых сооружений — актуальнейшие задачи, стоящие перед отечественными...
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Дисциплины:
2017-11-17 | 336 |
5.00
из
|
Заказать работу |
|
|
Цель работы: практическое знакомство со средствами передачи данных между процессами, (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 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!