Wie man IHTMLDocument2 aus einem HWND

Veralteter Haftungsausschluss für KB-Inhalte

Dieser Artikel wurde für Produkte geschrieben, für die Microsoft keinen Support mehr anbietet. Deshalb wird dieser Artikel im vorliegenden Zustand bereitgestellt und nicht mehr aktualisiert.

Zusammenfassung

Dieser Artikel veranschaulicht das IHTMLDocument2-Schnittstelle aus einem HWND abzurufen. Wenn Microsoft Active Accessibility (MSAA) installiert ist, können WM_HTML_GETOBJECT Senden zum Dokumentfenster (mit dem Fenster "Internet-Explorer_Server") und dann das Ergebnis von SendMessage ein MSAA-Funktion ObjectFromLresultvollständig gemarshallt IHTMLDocument2-Zeiger zu übergeben.

Weitere Informationen

Sie müssen Komponenten der Active Accessibility installiert für den Code in diesem Abschnitt Arbeiten beschrieben. Clients können Entwickler das SDK zu aktiven Eingabehilfen zu aktualisieren. Wenn Sie die neueste Version von Active Accessibility und neue Versionen der Eingabehilfen verteilen, müssen Sie die Laufzeitkomponenten (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 notwendig, die RDK für Clients, die nur 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 Informationen Active Accessibility und Active Accessibility-SDK herunterladen.

#include <mshtml.h>#include <atlbase.h>
#include <oleacc.h>

BOOL CALLBACK EnumChildProc(HWND hwnd,LPARAM lParam)
{
TCHARbuf[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: Vor Internet Explorer 5.5 Bilder wurden mit einer neuen Instanz der Shdocvw.dll und jedem Frame ein separates Fenster zugeordnet war. Internet Explorer 5.5 implementiert systemeigene Rahmen für eine bessere Leistung und alle Bilder werden von derselben Instanz von Shdocvw.dll gerendert. Da eine HWND für jeden Frame für Internet Explorer 5.5 oder höher werden, arbeiten der Beispielcode in diesem Abschnitt beschriebenen Dokument des Hauptfensters angezeigt. Mithilfe der Frames-Auflistung des Hauptfensters können Sie weiterhin jeden Frame Dokument abrufen.

Referenzen

SDK für Entwickler und RDK, die Active Accessibility-Laufzeitkomponenten auf dem Betriebssystem installiert, können von der folgenden Microsoft-Website heruntergeladen werden:

Informationen der Microsoft Active Accessibility-Unterstützung von MSHTML-Komponente von Microsoft Internet Explorer finden Sie auf der folgenden Website:
Klicken Sie für weitere Informationen auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:

176792 wie eine Verbindung zu einer ausgeführten Instanz von Internet Explorer

Eigenschaften

Artikelnummer: 249232 – Letzte Überarbeitung: 10.01.2017 – Revision: 1

Feedback