Интерфейс для прослушивания событий запущенного Internet Explorer

автор evteev, Мар.02, 2009, рубрики C/C++/C#

Приконнектиться к запущенному браузеру из Вашего приложения всегда было проблематично. Обычно для этой цели нужно писать «Browser Helper Object». Есть множество реализаций решения данной проблемы, но они либо слишком упрощены либо имеют массу ошибок. Приводимый ниже пример не имеет всех этих недостатков.

После некоторых исследований, я набрёл на интефейс, который позволяет следить за оболочками всех браузеров (как Windows Explorer так и Internet Explorer!).

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

Если просматривать запущенные копии Проводника, то можно сделать запрос – поддерживается ли вход через интерфейс IWebBrowser. Если да, то это либо WebBrowser либо ShellBrowser. Если же используется интерфейс IWebBrowser2, то Вы можете производить манипуляции с (и коннектиться с) Проводником либо можно отслеживать события используя DWebBrowserEvents.

Для начала, необходимо в Ваш проект включить две строки:

#import «mshtml.tlb» // Internet Explorer 5
#import «shdocvw.dll»

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

void CIEEnumWindowsDlg::ConnectToShell()
{
CoInitialize(NULL);

if(m_spSHWinds == 0)
{
//
// Получаем указатель на интерфейс ShellWindows
//
if(m_spSHWinds.CreateInstance(__uuidof(SHDocVw::ShellWindows)) == S_OK)
{
// Каркас события
//
LPCONNECTIONPOINTCONTAINER pConnPtCont;

if ((m_spSHWinds != NULL) &&
SUCCEEDED(m_spSHWinds->QueryInterface(IID_IConnectionPointContainer,
(LPVOID*)&pConnPtCont)))
{
ASSERT(pConnPtCont != NULL);
LPCONNECTIONPOINT pConnPt = NULL;
DWORD dwCookie = 0;

if (SUCCEEDED(pConnPtCont->FindConnectionPoint(
__uuidof(SHDocVw::DShellWindowsEvents), &pConnPt)))
{
ASSERT(pConnPt != NULL);
pConnPt->Advise( this->GetIDispatch(FALSE), &dwCookie);
pConnPt->Release();
}

pConnPtCont->Release();
}
}
else
{
AfxMessageBox(«Shell Windows interface is not avilable»);
}
}
}

Комментировать :

Добавить комментарий

Вам необходимо войти в вашу учетную запись для размещения комментария.



Что-то ищите?

Используйте форму для поиска по сайту:

Все еще не можете что-то найти? Оставьте комментарий или свяжитесь с нами, тогда мы позаботимся об этом!

Все о программировании - языки программирования скачать

Все о программировании

  • языки программирования
  • php программирование
  • программирование C++
  • программирование на java
  • язык программирования java
  • программирование на delphi
  • программирование на pascal
  • купить программы программирования
  • язык программирования assembler
  • языки программирования скачать
  • скачать языки программирования

Архив сообщений

Все вхождения, в хронологическом порядке...