Скачиваний:
100
Добавлен:
01.05.2014
Размер:
1.56 Mб
Скачать

Использование Internet Explorer в приложениях

Microsoft Internet Explorer является СОМ-сервером, поэтому его можно использовать в своих приложениях. Поскольку начиная с версии Windows 95 OSR/2 он стал частью операционной системы, при его использовании в данной операционной системе нет необходимости добавлять в дистрибутив какие-либо модули.

Для использования Internet Explorer в приложении необходимо выбрать элемент управления TCppWebBrowserсо страницы Internet. После этого элемент управления можно поместить на форму и сделать его размер достаточно большим.

Полученный элемент управления полностью идентичен по возможностям приложению Microsoft Internet Explorer: он показывает гипертекст, графику, имеет виртуальную Java-машину, что позволяет применять скрипты и апплеты; он также поддерживает работу других элементов управления v ActiveX, использующих его как контейнер. Главные его методы - Navigate,Forward,GoBack,Search,Stopи другие - соответствуют командам, доступным в приложении Microsoft Internet Explorer. Из полезных нотификационных сообщений следует отметитьOnStatusTextChange, которое вызывается при необходимости поместить текст в строку состояния, иOnProgressChange, которое можно использовать для индикации состояния какого-либо процесса (например, загрузки содержимого). На форму нанесены кнопки: "Navigate", "Stop", "Previous", "Next", "Refresh", "Search" и Ëxplore", а также элементы:ComboBox,ProgressBarиStatusBar. Код для тестирования элемента управления ActiveXTCppWebBrowserприведен ниже:

// кнопка Navigate

void __fastcall TForm1::Button1Click(TObject *Sender)

{

OleVariant Flags, TargetFrameName, PostData, Headers;

BSTR AD;

AnsiString S;

int N;

S = ComboBox1->Text;

N = ComboBox1->Items->IndexOf (S);

if (N < 0)

{

if (ComboBox1->Items->Count == 0)

{

ComboBox1->Items->Add (S);

}

else

{

ComboBox1->Items->Insert (0, S);

}

}

else

{

ComboBox1->Items->Exchange (0, N);

}

ComboBox1->Text = S;

AD = WideString(S);

CppWebBrowser1->Navigate (AD, Flags, TargetFrameName, PostData, Headers);

}

// кнопка Stop

void __fastcall TForm1::Button2Click(TObject *Sender)

{

CppWebBrowser1->Stop ();

}

// кнопка Previous

void __fastcall TForm1::Button3Click(TObject *Sender)

{

CppWebBrowser1->GoBack ();

}

// кнопка Next

void __fastcall TForm1::Button4Click(TObject *Sender)

{

CppWebBrowser1->GoForward ();

}

// кнопка Refresh

void __fastcall TForm1::Button5Click(TObject *Sender)

{

CppWebBrowser1->Refresh ();

}

void __fastcall TForm1::CppWebBrowser1StatusTextChange(TObject *Sender,

BSTR URL)

{

StatusBar1->SimpleText = Text;

}

void __fastcall TForm1::CppWebBrowser1ProgressChange(TObject *Sender,

long Progress, long ProgressMax)

{

ProgressBar1->Position = 100 * Progress / (ProgressMax + 1);

}

При запуске данного приложения получаем полноценный Web-браузер.

Из других полезных свойств следует отметить свойство Documents, которое объявлено какIDispatch. При использовании этого свойства можно получить информацию о последней полученной HTML-странице (ее текстовое содержание, какие команды встречались в гипертексте и т. д.) Вся эта информация не показывается пользователю Internet Explorer, но может быть полезной для программиста. Например, вместо того чтобы создавать свой интерпретатор гипертекста, можно просто воспользоваться данными возможностями.

Свойство Documentsв том виде, как оно определено, практически бесполезно, так как неизвестны команды для интерфейсаIDispatch. Но имеется вспомогательная библиотека, которая детально расшифровывает методы и свойства объектов, входящих в коллекциюDocuments. Для извлечения информации о гипертексте необходимо иметь Microsoft Internet Explorer версии 4.0 или старше.

Для начала к проекту необходимо добавить библиотеку типов Internet Explorer Scripting Object Model, которая определена в модуле MSHTML.DLL. Следует иметь в виду, что эта библиотека может быть не зарегистрирована как сервер и при выборе пункта меню C++Builder Project/Import Type Library она будет отсутствовать в списке предлагаемых библиотек. В этом случае нужно зарегистрировать ее.