Jak získat IHTMLDocument2 z HWND

Překlady článku Překlady článku
ID článku: 249232 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Souhrn

Tento článek ukazuje, jak získat rozhraní IHTMLDocument2 z HWND. Pokud je nainstalován Microsoft Active Accessibility (MSAA), můžete odeslat zprávu WM_HTML_GETOBJECT do okna dokumentu (pomocí třídy okna "Internet Explorer_Server") a pak předat výsledek z SendMessage funkce MSAA, ObjectFromLresult, chcete-li získat plně zařazené ukazatel IHTMLDocument2.

Další informace

Musíte mít nainstalované v systému pro daný kód popsaný v této části práce součásti Active Accessibility. Klient mohou vývojáři SDK vytvářet a aktualizovat aktivní usnadnění. Je-li zahrnout nejnovější verze sady Active Accessibility a distribuovat nové verze aplikace pomůcek pro usnadnění, je nutné distribuovat součásti runtime (RDK) pro klienty, které byly vyvinuty pro systém Microsoft Windows 95, Windows 98 nebo Windows NT 4.0 Service Pack 4 nebo 5. Není nutné zahrnout sady RDK vyvinutý výhradně pro systém Windows 2000 nebo Windows NT 4.0 s aktualizací Service Pack 6 klientů. Nové součásti jsou již zahrnuty v těchto operačních systémech.

Naleznete v "Odkazy" části tohoto článku informace o Active Accessibility a kde lze stáhnout Active Accessibility 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 access
void 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();
}
				
Poznámka: Internet Explorer 5.5 snímky byly implementovány hostí novou instanci Shdocvw.dll do každého snímku má samostatné okno s ním spojené. Internet Explorer 5.5 implementuje nativních rámců pro lepší výkon a všechny snímky jsou vykresleny ve stejné instanci Shdocvw.dll. Vzhledem k tomu, že nebude HWND pro každý rámec pro aplikaci Internet Explorer 5.5 a novější, ukázkový kód popsaný v této části bude fungovat jak se dostat do hlavního okna dokumentu. Stále můžete získat každý snímek dokumentu pomocí kolekce snímků z hlavního dokumentu.

Odkazy

SDK pro vývojáře a RDK, který nainstaluje součásti Active Accessibility runtime do operačního systému, lze stáhnout z následujícího webu společnosti Microsoft:
http://www.microsoft.com/downloads/details.aspx?FamilyId=9b14f6e1-888A-4f1d-b1a1-da08ee4077df&displaylang=en
Informace o Microsoft Active Accessibility podpora poskytovaná MSHTML součást aplikace Microsoft Internet Explorer naleznete na následujícím webu:
Podpora Active Accessibility
Další informace získáte kliknutím na číslo článku znalostní báze Microsoft Knowledge Base:
176792Jak se připojit k instanci spuštěné aplikace Internet Explorer

Vlastnosti

ID článku: 249232 - Poslední aktualizace: 30. května 2013 - Revize: 4.0
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Internet Explorer 4.01 Service Pack 1
Klíčová slova: 
kbhowto kbmshtml kbwebbrowser kbmt KB249232 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku: 249232
Právní omezení pro obsah znalostní báze týkající se produktů, jejichž podpora byla ukončena
Tento článek byl napsán o produktech, pro které společnost Microsoft již neposkytuje nadále podporu. Článek je tedy nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.

Dejte nám zpětnou vazbu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com