Wie IHTMLDocument2 aus einem HWND abgerufen

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 249232 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Zusammenfassung

Dieser Artikel beschreibt, wie die IHTMLDocument2-Schnittstelle aus einem HWND abgerufen wird. Wenn Microsoft Active Accessibility (MSAA) installiert ist, können die WM_HTML_GETOBJECT-Nachricht an das Fenster des Dokuments (mit die Fensterklasse "Internet-Explorer_Server") und übergeben Sie das Ergebnis von SendMessage an eine MSAA-Funktion ObjectFromLresult, um einen vollständig gemarshallten IHTMLDocument2-Zeiger zu erhalten.

Weitere Informationen

Sie müssen Active Accessibility-Komponenten auf dem System für den Code in diesem Abschnitt arbeiten beschrieben installiert haben. Clients können Entwickler das SDK zu entwickeln und Aktualisieren von Active Accessibility Aids. Wenn Sie die neueste Version von Active Accessibility integrieren und neue Versionen der Barrierefreiheit-Hilfsmittel verteilen, müssen Sie die Common Language Runtime-Komponenten (RDK) für Clients verteilen, die für Microsoft Windows 95, Windows 98 oder Windows NT 4.0 mit Service Pack 4 oder 5 entwickelt wurden. Es ist nicht erforderlich, die RDK für Clients, die ausschließlich für Windows 2000 oder Windows NT 4.0 mit Service Pack 6 entwickelt. Die neuen Komponenten sind bereits in diesen Betriebssystemen enthalten.

Finden Sie im Abschnitt "Informationsquellen" dieses Artikels Weitere Informationen über Active Accessibility und wo Sie die Active Accessibility-SDK herunterladen.
#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();
}
				
Hinweis: Bevor Sie Internet Explorer 5.5 Frames wurden durch eine neue Instanz der Datei "Shdocvw.dll" Hosten implementiert und jeden Frame ein separates Fenster zugeordnet war. Internet Explorer 5.5 implementiert systemeigene Rahmen für eine bessere Leistung, und alle Frames werden von der gleichen Instanz von Shdocvw.dll gerendert. Da es keine HWND für jeden Frame für Internet Explorer 5.5 und höher, funktioniert der Beispielcode in diesem Abschnitt beschriebenen um das Dokument nur im Hauptfenster anzuzeigen. Sie können immer noch mithilfe von Frames-Auflistung des Hauptdokuments auf jeden Frame Dokument abrufen.

Informationsquellen

Das SDK für Entwickler und RDK, in denen die Active Accessibility-Runtime-Komponenten auf dem Betriebssystem installiert wird, können von der folgenden Microsoft-Website heruntergeladen werden:
http://www.Microsoft.com/downloads/details.aspx?FamilyID=9b14f6e1-888a-4f1d-B1A1-da08ee4077df&displaylang=en
Informationen über die Microsoft Active Accessibility-Unterstützung durch die MSHTML-Komponente von Microsoft Internet Explorer finden Sie auf den folgenden Website:
Über Active Accessibility-Unterstützung
Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
176792Verbindung zu einer ausgeführten Instanz von Internet Explorer

Eigenschaften

Artikel-ID: 249232 - Geändert am: Donnerstag, 30. Mai 2013 - Version: 4.0
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Internet Explorer 4.01 Service Pack 1
Keywords: 
kbhowto kbmshtml kbwebbrowser kbmt KB249232 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell übersetzt und wird dann möglicherweise mithilfe des Community Translation Framework (CTF) von Mitgliedern unserer Microsoft Community nachbearbeitet. Weitere Informationen zu CTF finden Sie unter http://support.microsoft.com/gp/machine-translation-corrections/de.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 249232
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.
Disclaimer zu nicht mehr gepflegten KB-Inhalten
Dieser Artikel wurde für Produkte verfasst, für die Microsoft keinen Support mehr anbietet. Der Artikel wird deshalb in der vorliegenden Form bereitgestellt und nicht mehr weiter aktualisiert.

Ihr Feedback an uns

 

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