Как получить IHTMLDocument2 из HWND

ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.

Эта статья на английском языке: 249232
Эта статья помещена в архив. Она предлагается "как есть" и обновляться не будет.
Аннотация
В данной статье показано, как получить интерфейс IHTMLDocument2 из HWND. Если установлен Microsoft Active Accessibility (MSAA), можно отправить сообщение WM_HTML_GETOBJECT окно документа (с классом окна «Интернет Explorer_Server») и затем передает результат из SendMessage функция MSAA, ObjectFromLresult, полностью упакованные указатель IHTMLDocument2.
Дополнительная информация
Должны быть установлены в системе для кода, описанные в данном разделе для работы компоненты Active Accessibility. Разработчики клиентских SDK можно использовать для разработки и обновления активных вспомогательных средств. Если включить последнюю версию Active Accessibility и распространения новых версий вспомогательных средств, необходимо распределить компоненты среды выполнения (ПАКЕТА) для клиентов, которые были разработаны для Microsoft Windows 95, Windows 98 или Windows NT 4.0 с пакетом обновления 4 или 5. Это необходимо для включения ПАКЕТА для клиентов, разработанных исключительно для Windows 2000 или для Windows NT 4.0 с пакетом обновления 6. Новые компоненты, уже включены в этих операционных системах.

Обратитесь к разделу «Ссылки» в данной статье сведения о Active Accessibility и загрузка Active SDK специальных возможностей.
#include <mshtml.h>#include <atlbase.h>#include <oleacc.h>BOOL CALLBACK EnumChildProc(HWND hwnd,LPARAM lParam){	TCHAR	buf[100];	::GetClassName( hwnd, (LPTSTR)&buf, 100 );	if ( _tcscmp( buf, _T("Internet Explorer_Server") ) == 0 )	{		*(HWND*)lParam = hwnd;		return FALSE;	}	else		return TRUE;};//You can store the interface pointer in a member variable //for easier accessvoid CDlg::OnGetDocInterface(HWND hWnd) {	CoInitialize( NULL );	// Explicitly load MSAA so we know if it's installed	HINSTANCE hInst = ::LoadLibrary( _T("OLEACC.DLL") );	if ( hInst != NULL )	{		if ( hWnd != NULL )		{			HWND hWndChild=NULL;			// Get 1st document window			::EnumChildWindows( hWnd, EnumChildProc, (LPARAM)&hWndChild );			if ( hWndChild )			{				CComPtr<IHTMLDocument2> spDoc;				LRESULT lRes;							UINT nMsg = ::RegisterWindowMessage( _T("WM_HTML_GETOBJECT") );				::SendMessageTimeout( hWndChild, nMsg, 0L, 0L, SMTO_ABORTIFHUNG, 1000, (DWORD*)&lRes );				LPFNOBJECTFROMLRESULT pfObjectFromLresult = (LPFNOBJECTFROMLRESULT)::GetProcAddress( hInst, _T("ObjectFromLresult") );				if ( pfObjectFromLresult != NULL )				{					HRESULT hr;					hr = (*pfObjectFromLresult)( lRes, IID_IHTMLDocument, 0, (void**)&spDoc );					if ( SUCCEEDED(hr) )					{						// Change background color to red						spDoc->put_bgColor( CComVariant("red") );					}				}			} // else document not ready		} // else Internet Explorer is not running		::FreeLibrary( hInst );	} // else Active Accessibility is not installed	CoUninitialize();}				
Примечание: До Internet Explorer 5.5 кадры были реализованы путем размещения нового экземпляра Shdocvw.dll, и каждый кадр имеет отдельное окно, связанное с ним. Internet Explorer 5.5 реализует кадры машинного кода для улучшения производительности и все кадры воспроизводятся в том же экземпляре Shdocvw.dll. Так как не будет HWND для каждого кадра для Internet Explorer 5.5 и более поздних версиях, примеры кода, описанные в этом разделе будет работать для получения документов в главном окне. По-прежнему можно получить для каждого фрейма документа с помощью коллекции рамки основного документа.
Ссылки
Пакет SDK для разработчиков и ПАКЕТА, который устанавливает компоненты среды выполнения Active Accessibility операционной системе, можно загрузить с веб-узла корпорации Майкрософт:Сведения о Microsoft Active Accessibility, предоставляемый компонентом MSHTML Microsoft Internet Explorer посетите следующий веб-узел:Для получения дополнительных сведений щелкните следующий номер статьи базы знаний Майкрософт:
176792Как подключиться к запущенному экземпляру обозревателя Internet Explorer
hwnd модели объекта документа Active accessibility

Внимание! Эта статья переведена автоматически

Свойства

Номер статьи: 249232 — последний просмотр: 12/05/2015 18:00:52 — редакция: 6.0

Microsoft Internet Explorer 4.01 Service Pack 1

  • kbnosurvey kbarchive kbhowto kbmshtml kbwebbrowser kbmt KB249232 KbMtru
Отзывы и предложения