Cómo obtener un identificador HWND IHTMLDocument2

Seleccione idioma Seleccione idioma
Id. de artículo: 249232 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

Resumen

En este artículo se muestra cómo obtener un identificador HWND de la interfaz IHTMLDocument2. Si está instalado Microsoft Active Accessibility (MSAA), puede enviar el mensaje WM_HTML_GETOBJECT a la ventana del documento (con la clase de ventana "Internet Explorer_Server") y, a continuación, pasa el resultado de SendMessage a una función MSAA, ObjectFromLresult, para obtener un puntero IHTMLDocument2 completamente se han calculado las referencias.

Más información

Debe tener componentes de Active Accessibility instalados en el sistema para el código descrito en esta sección para trabajar. Los programadores de cliente pueden utilizar el SDK para desarrollar y mantener actualizadas las ayudas de accesibilidad activa. Si incorpora la última versión de Active Accessibility y distribuir las nuevas versiones de los dispositivos de accesibilidad, debe distribuir los componentes en tiempo de ejecución (RDK) para los clientes que se han desarrollado para Microsoft Windows 95, Windows 98 o Windows NT 4.0 con Service Pack 4 o 5. No es necesario incluir el RDK de clientes desarrollados exclusivamente para Windows 2000 o de Windows NT 4.0 con Service Pack 6. Los nuevos componentes ya están incluidos en estos sistemas operativos.

Consulte la sección "Referencias" de este artículo para obtener información acerca de Active Accessibility y dónde descargar 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();
}
				
Nota: Antes de Internet Explorer 5.5, marcos se han implementado al alojar una nueva instancia de Shdocvw.dll y cada fotograma tenía una ventana independiente asociada a él. Internet Explorer 5.5 implementa marcos nativos para mejorar el rendimiento y se presentan todos los marcos de la misma instancia del archivo Shdocvw.dll. Ya que no habrá un HWND para cada fotograma para Internet Explorer 5.5 y versiones posteriores, funcionará el código de ejemplo se describe en esta sección para obtener el documento de sólo en la ventana principal. Todavía puede obtener al documento de cada fotograma mediante la colección de marcos del documento principal.

Referencias

El SDK para desarrolladores y RDK, que instala los componentes de Active Accessibility en tiempo de ejecución en el sistema operativo, pueden descargarse desde el siguiente sitio Web de Microsoft:
http://www.Microsoft.com/downloads/details.aspx?FamilyID=9b14f6e1-888a-4f1d-B1A1-da08ee4077df&displaylang=en
Para obtener información acerca de la compatibilidad de Microsoft Active Accessibility proporcionada por el componente MSHTML de Microsoft Internet Explorer, visite el siguiente sitio Web:
Acerca del soporte técnico de Active Accessibility
Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
176792Cómo conectarse a una instancia en ejecución de Internet Explorer

Propiedades

Id. de artículo: 249232 - Última revisión: jueves, 30 de mayo de 2013 - Versión: 4.0
La información de este artículo se refiere a:
  • Service Pack 1 de Microsoft Internet Explorer 4.01
Palabras clave: 
kbhowto kbmshtml kbwebbrowser kbmt KB249232 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 249232
Renuncia a responsabilidad de los contenidos de la KB sobre productos a los que ya no se ofrece asistencia alguna
El presente artículo se escribió para productos para los que Microsoft ya no ofrece soporte técnico. Por tanto, el presente artículo se ofrece "tal cual" y no será actualizado.

Enviar comentarios

 

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