Индивидуальное задание (Изучение ActiveX технологии)

ActiveX. CBuilder

Бережок А.Ю.

 

Оглавление

1. Разработка ActiveX в среде CBuilder

2. Связь Explorer и ActiveX

3. ActiveX элемент «Wacher»

4. Если нет желания загружать...

5. Этапы создания ActiveX с помощью CBuilder

6. Код файла имплементации

7. "+" и "-" CBuilder как среды разработки ActiveX компонента

8. Выводы

9. Литература

 

Разработка ActiveX в среде CBuilder

Если быть предельно кратким, ActiveX - это старая добрая технология OLE (Object Linking and Embedding, "связывание и встраивание объектов"), появившаяся впервые вместе с Windows 3.1 еще в 1991 году. Сейчас Microsoft пытается приспособить OLE для наполнения WWW интерактивным содержимым, а тем самым - и для тесной, но максимально прозрачной для пользователя интеграции сетевых ресурсов с операционной системой Windows.

Как и OLE, ActiveX представляет собой довольно пестрый набор разнородных технологий, объединенных скорее общей идеологией, чем каким-то единым стандартом. Для начального ознакомления принято разделять букет ActiveX на три части - органы управления (ActiveX controls), сценарии (ActiveX scripts) и документы (ActiveX documents).

 

Связь Explorer и ActiveX

Органы управления ActiveX подключаются к HTML-документам с помощью тега <OBJECT>.


<OBJECT
ALIGN=BASELINE|CENTER|LEFT|MIDDLE|RIGHT| TEXTBOTTOM|TEXTMIDDLE|TEXTTOP
BORDER= число
CLASSID= URL
CODEBASE= URL
CODETYPE= MIME-тип
DATA= URL
DECLARE HEIGHT= число
HSPACE= число
ID= идентификатор
NAME= идентификатор
SHAPES STANDBY= текст
TYPE= MIME-тип
USEMAP= URL
VSPACE= число
WIDTH= число
> </OBJECT>

 

ActiveX элемент «Wacher»

Суть работы элемента состоит из пунктов:

  • отображение текущего времени в виде "стрелочных часов";

  • отображение всех запущенных в данный момент процессов.

Элемент запускается в виде изображения циферблата со стрелками, показывающими текущее время.

По желанию пользователь может переключится в режим отображения списка процессов. Переход к списку процессов производится путем двойного нажатия левой кнопкой мыши в области ActiveX элемента.

На странице списка процесcов имеется две кнопки: "To clock", "Stop process". Первая кнопка реализует обратный переход к отображению часов. А вторая кнопка производит снятие выполнения процесса. Ниже представлен сама ActiveX форма.

Страница с Activex элементом

 

Если нет желания загружать...

часы
список

 

На рисунках изображен элемент в работе...

 

Этапы создания ActiveX с помощью CBuilder

1) Необходимо разработать обычную EXE программу с помощью стандартных форм. Довести ее до полной работоспособности и устранить ошибки. Разработка "с нуля" ActiveX элемента как ActiveX форму достаточно сложная задача и требует определенных навыков и знание технологии. Поэтому в начале следует доработать программу как стандартную форму на VCL компонентах.

 

2) VCL технология позволяет быстро переносить одинаковые элементы в разные типы проектов. на этом этапе необходимо создать ActiveX форму.

File->New->Other->ActiveX->ActiveX Form

 

3) В "ActiveX Form Wizard" ввести название элемента, название проекта изменится автоматически. Для сохранения авторства (лицензия), необходимо поставить галочку напротив пункта "Make Control Licensed".

После этого будут сгенерированы файлы *Impl.cpp, *_TLB.cpp, *_ATL.cpp (и h-файлы)

 

В файле TLB будут сгенерированы все стандартные методы и свойства VCL-объектов. А вот созданные ранее методы и свойства из стандартной ранее созданной формы EXE файла необходимо перенести в одноименные методы и создать одноименные свойства в Impl-файле.

 

4) После создания и заполнения ActiveX формы необходимо скомпилировать проект и исправить ошибки.

Project->Compile Unit

 

5) Установить настройки Project->Web Deployment Options

  • установить путь к OCX файлу

  • установить путь к будущему HTML айлу

  • установить виртуальный путь к OCX айлу

 

6) Зарегистрировать компонент:

Run->Register ActiveX Server

 

7) Создать результирующий файл OCX и HTML:

Project->Web Deploy

 

Код файла имплементации

Методы реализации стандартных функций опущены.

 

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

 

void __fastcall Twacher::Timer1Timer(TObject *Sender)
{
static int dual=0; //переменная необходимая для пропуска выполнения участка кода
int index;
TDateTime date; //переменная даты и времени
unsigned short h,m,s,p;
HANDLE HS; //переменные необходимые для составления списка процессов
PROCESSENTRY32 P;
if (Image1->Visible) //если отображается рисунок, то выполняется нижеприведеный код
{
Image1->Canvas->CopyRect(TRect(0,0,150,150),Image2->Canvas,TRect(0,0,150,150)); //восстановление рисунка подложки
date=Time(); //получение текущего времени
date.DecodeTime(&h,&m,&s,&p);
min=(float)m*6;
hour=(float)h*30+(float)m*0.5;
Image1->Canvas->Pen->Color=clBlack;
Image1->Canvas->Pen->Width=4;
Image1->Canvas->MoveTo(75,75);
Image1->Canvas->LineTo(75+(int)(sin(hour*M_PI/180)*30),75-(int)(cos(hour*M_PI/180)*30));
Image1->Canvas->Pen->Color=0x881100;
Image1->Canvas->Pen->Width=2;
Image1->Canvas->MoveTo(75,75);
Image1->Canvas->LineTo(75+(int)(sin(min*M_PI/180)*50),75-(int)(cos(min*M_PI/180)*50)); //отрисовка минутной и часовой стрелок
}
else
{
dual++;
if (dual==2)
{
for (index=0;index<ListBox1->Items->Count;index++)
{
CloseHandle((HANDLE)ListBox1->Items->Objects[index]); //уничтожение старых дескрипторов процессов из списка
}
ListBox1->Clear();
HS=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); //получение указателя на системный список процессов
P.dwSize=sizeof(PROCESSENTRY32);
if (Process32First(HS,&P)) //найти превый элемент системного списка процессов
{
do
{
ListBox1->AddItem(P.szExeFile,(TObject *)OpenProcess(PROCESS_ALL_ACCESS,true,P.th32ProcessID)); //сохранить имя исполняемого файла и дескриптора процесса в локальном списке
}
while (Process32Next(HS,&P)); //чтение следующего элемента системного списка процессов
CloseHandle(HS);
}
dual=0;
}
}

}

Остальне функции можно найти в исходном коде.

 

"+" и "-" CBuilder как среды разработки ActiveX компонента

CBuilder предоставляет очень удобную среду разработки, которая сходна с разработкой обычных форм стандартных исполняемых модулей. Недостаток разработанного компонента состоит в его сравнительно больших конечных размерах. Минимальный скомпилированный и оптимизированный проект на CBuilder (с отключенными Dinamic Libraries & Packages для 100% запускаемости на любой другой машине) составляет примерно 600 килобайт. Дальше рост размера программы происходит достаточно медленно, но эта стартовая отметка весьма существенна при загрузке страниц с ActiveX элементом. В упакованном состоянии этот предел уменьшается в два раза.

 

Выводы

Стандарт ActiveX позволяет программным компонентам взаимодействовать друг с другом по сети независимо от языка программирования, на котором они написаны. С помощью ActiveX можно "оживить" страницы Web эффектами мультимедиа, интерактивными объектами или сложными приложениями. ActiveX обеспечивает некий "скрепляющий раствор", с помощью которого отдельные программные компоненты на разных компьютерах "склеиваются" в единую распределенную систему.

Основные преимущества использования технологии ActiveX:

  • Быстрое написание программного кода. Программирование сетевых взаимодействий становится очень похожим на программирование для отдельного компьютера.

  • Открытость и мобильность. Спецификации технологии недавно были переданы в Open Group как основа открытого стандарта. Кроме того, Microsoft совместно с компаниями Metrowerks и Bristol заканчивает реализацию технологий ActiveX для платформ Macintosh и UNIX.

  • Возможность написания приложений с использованием знакомых средств разработки. Программные элементы ActiveX могут быть созданы с помощью Visual Basic, Visual C++, Borland Delphi, Borland C++, любых средств разработки на Java.

  • Большое количество уже существующих программных элементов ActiveX, которые бесплатно могут применяться на серверах Web и в приложениях независимых разработчиков. Кроме того, почти любой программный компонент OLE совместим с технологиями ActiveX и может применяться без модификаций в сетевых приложениях.

  • Стандартность. Технология ActiveX основана на широко используемых стандартах Internet (TCP/IP, HTML, Java) с одной стороны и стандартах, введенных в свое время Microsoft и необходимых для сохранения совместимости (COM, OLE).

Существенным недостатком ActiveX технологии, по сравнению, например, с Явой, понижение безопасности. Ведь ActiveX компонент, фактически, представляет собой исполняемый модуль, которому даются полномочия EXE файла. Поэтому ожесточенная борьба с хакерством и методы повышения безопасности привели к определенным трудностям в разработки ActiveX компонент. Это можно пронаблюдать по наличию большого числа пунктов загрузки и установки компонента на локальной машине. Но, в целом, ActiveX - технология подающая надежды...

 

Литература

1) "Как связать ActiveX и Internet Explorer" http://www.tvoyomsk.com

2) "Технологии ActiveX" Microsoft HTML Help