Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
сис прог печать.doc
Скачиваний:
27
Добавлен:
11.12.2018
Размер:
329.22 Кб
Скачать

Задание №6 Использование технологии сом при разработке приложений в Delphi. Создание и использование внутреннего сервера

Цель работы: получить навыки создания внутреннего сервера и клиентов СОМ при разработке приложений в Delphi.

Индивидуальное задание: Создать внутренний сервер COM и реализовать функции в соответствии с заданными WinAPI. Создать клиентское приложение, которое взаимодействует с внутренним сервером COM.

Решение

  1. Создадим внутренний COM сервер:в виде динамической библиотеки, для чего выбрем на странице ActiveX Репозитория Builder C++ значок ActiveX Library, в результате чего будет создан новый проект DLL-библиотеки.

  2. Из Репозитория выберем значок COM Object на странице ActiveX. В результате будет открыт диалог установки начальных параметров нового объекта: в поле ввода текста Class Name необходимо введем имя нового класса (например, New), выбор в списке Instancing в данном случае не имеет значения, выбор в списке Threading Model – Apartment, флажок Include Type Library необходимо включить.

  3. После закрытия предыдущего диалога появится окно редактирования библиотеки типов (Type Library), в котором в левой части будет представлено иерархическое дерево модулей, объектов и интерфейсов данного сервера, а в правой части – закладки с их свойствами. Интерфейс INew, наследник интерфейса IUnknown, будет создан автоматически. Щелчком правой кнопки мыши на интерфейсе создать метод (функцию), при необходимости задать на закладке Parameters с помощью кнопки Add параметры, которые необходимо в функцию передавать при ее вызове. При внесении изменений в библиотеку типов автоматически будут вноситься изменения в основной модуль проекта в разделе описания класса TNew (будут добавлены объявления методов) и в разделе реализации (будут добавлены заготовки методов). Вариант библиотеки типов на С++ сохраняется в файле с расширением CPP и окончанием _TLB в названии. Введем тела созданных методов. Добавим функции GetCurrentDirectory() и SystemTimeToFileTime().Откомпилируем созданную DLL-библиотеку. Зарегистрируем созданные структуры данных и библиотеку типов в реестре ОС с помощью кнопки Register Type Library редактора библиотеки типов или с помощью команды Register ActiveX Server меню Run Builder C++. После вызова такая динамическая библиотека подгружается и работает как внутренний сервер СОМ.

Вид окна интерфейса *.tlb

C описанием функций:

STDMETHODIMP TGetsImpl::GetDirectory(unsigned_char* File)

{

unsigned char s[80];

GetCurrentDirectory(80,s);

File = s;

}

STDMETHODIMP TGetsImpl::SystemTime(VARIANT SysTime, VARIANT* FileTime)

{

GetLocalTime(SysTime);

SystemTimeToFileTime(&SysTime,&FileTime);

}

Создадим клиента и добавим следующий код

public: // User declarations

__fastcall TForm6(TComponent* Owner);

TCOMIGets getdata;

В отработчик событий:

void __fastcall TForm6::Button1Click(TObject *Sender)

{

unsigned char *s;

getdata = CoGets::Create();

getdata.GetDirectory(s);

Edit1->Text = *s;

}

void __fastcall TForm6::Button2Click(TObject *Sender)

{

FILETIME time;

getdata.SystemTime(SYSTEMTIME Stime,time);

Edit2->Text = time.dwHighDateTime;

Edit3->Text = time.dwLowDateTime;

}

Результат клиента:

Вывод: технология СOM широко используется практически во всех приложений и обеспечивает удобный механизм обмена данными основными характеристиками является инкапсуляция и полиморфизм. COM поддерживает двоичный стандарт что позволяет использовать любой язык для доступа к библиотеке.

Список используемой литературы:

  1. Саймон, Р. Windows 2000 API. Энциклопедия программиста. – К.-СПб.: ООО «ДиаСофтЮП», 2002. – 1088 с. – ISBN   966-7393-71-2

  2. Андреев, Г.И. Microsoft Windows 2000, Server и Professional. Русские версии / Под общей ред. А.Н. Чемкарёва и Д.Б.Вишнякова. – СПб.: БХВ-Петербург, 2002 – 1056 с. – ISBN   5-8206-0107-6

  3. Андреев, Г.А. Мicrosoft Windows XP. Руководство администратора / Под общ. ред. А.М. Чемкарёва. – СПб.: БХВ-Петербург, 2002. – 848 с. – ISBN   5-94157-168-2

  4. Джонсон, М. Системное программирование в среде Win 32. – М.-СПб.- К.: Издательский дом «Вильямс», 2001. – 464 с. – ISBN   5-8459-0177-4 

  5. Роман, C. Программирование в Win 32 API на Visual Basic: Пер с англ. – М.: ДМК Пресс 2001. – 480 с. – ISBN   5-94074-102-9 

  6. Фаронов, В.В. Программирование баз данных в Delphi 7. – СПб.: Питер, 2006. – 459 с. – ISBN   5-318-00100-9 

  7. Елманова, Н. Delphi и технология COM. Мастер-класс. / Н. Елманова, С. Трепалин, А. Тенцер. – СПб.: Питер, 2003. – 704 с. – ISBN   5-94723-648-6

  8. Архангельский А.Я. Программирование в Builder C++ 6 – Москва Издательство Бином, 2003