Makale numarası: 249232 - Son Gözden Geçirme: 27 Eylül 2006 Çarşamba - Gözden geçirme: 3.0

Bir HWND ıhtmldocument2 alma

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.
Hepsini aç | Hepsini kapa

Özet

Bu makalede, bir HWND ıhtmldocument2 arabirim nasıl gösterir. Microsoft Active Accessibility (MSAA) yüklüyse, belge penceresi ("Internet Explorer_Server" pencere sınıfı) WM_HTML_GETOBJECT ileti göndermek ve sonra sonucu ObjectFromLresult tam olarak sıralanmış ıhtmldocument2 işaretçisi almak için bir MSAA işlevi için SendMessage geçirmek.

Daha fazla bilgi

Active Accessibility bileşenlerini çalışmak için bu bölümde anlatılan kodu için sistemde yüklü olması gerekir. Istemci geliştiricilerin, geliştirme ve etkin erişilebilirlik yardımlarına güncelleştirme SDK kullanabilirsiniz. Active Accessibility'nin en son sürümünü ekleyebilir ve yeni sürümler, erişilebilirlik yardımlarıyla dağıtmak, Microsoft Windows 95, Windows 98 veya Windows NT 4.0 Service Pack 4 veya 5 ile geliştirilen istemcileri için çalışma zamanı bileşenleri (RDK) dağıtmanız gerekir. Istemcilerin yalnızca Windows 2000 veya Windows NT 4.0 Service Pack 6 ile geliştirilen RDK eklemek gerekli değildir. Yeni bileşenler zaten bu işletim sistemleri dahil edilir.

Active Accessibility'nin ve Active Accessibility SDK'YI karşıdan yüklemek gereken yeri hakkında bilgi için bu makalenin "Başvurular" bölümüne bakın.
#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();
}
				
Not: önce ınternet Explorer 5.5 çerçeveleri Shdocvw.dll yeni bir örneğini barındırarak uygulanmış ve her çerçevenin ayrı bir pencere ilişkili sahipti. Özgün kare daha iyi başarım için ınternet Explorer 5.5 uygular ve tüm çerçeveleri Shdocvw.dll aynı örneği tarafından işlenir. ınternet Explorer 5.5 ve daha sonra her çerçeve için bir HWND yok olacaktır çünkü bu bölümde açıklanan örnek kod penceresi yalnızca ana belgeye almak için çalışır. Ana belge çerçeveler</a1> topluluğunu kullanarak, her çerçevenin belgeye yine de alabilirsiniz.

Referanslar

Geliştiriciler için SDK ve hangi işletim sistemini Active Accessibility çalışma zamanı bileşenlerini yükler, RDK, aşağıdaki Microsoft Web sitesinden yüklenebilir:
http://www.microsoft.com/downloads/details.aspx?FamilyID=9b14f6e1-888a-4f1d-b1a1-da08ee4077df&DisplayLang=en (http://www.microsoft.com/downloads/details.aspx?FamilyID=9b14f6e1-888a-4f1d-b1a1-da08ee4077df&DisplayLang=en)
Microsoft ınternet Explorer'ın MSHTML bileşeni tarafından sağlanan Microsoft Active Accessibility desteği hakkında daha fazla bilgi için aşağıdaki Microsoft Web sitesini ziyaret edin:
http://msdn.microsoft.com/workshop/browser/accessibility/overview/overview.asp (http://msdn.microsoft.com/workshop/browser/accessibility/overview/overview.asp)
Daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
176792  (http://support.microsoft.com/kb/176792/ ) Nasıl yapılır: ınternet Explorer çalışan bir örneğine bağlama

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Internet Explorer 4.0 128-Bit Edition
  • Microsoft Internet Explorer 4.01 Service Pack 2
  • Microsoft Internet Explorer 4.01 Service Pack 1
  • Microsoft Internet Explorer 4.01 Service Pack 2
  • Microsoft Internet Explorer 5.0
  • Microsoft Internet Explorer 5.5
Anahtar Kelimeler: 
kbmt kbhowto kbmshtml kbwebbrowser KB249232 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:249232  (http://support.microsoft.com/kb/249232/en-us/ )
Retired KB ArticleKullanım Dışı Bilgi Bankası İçeriği Yasal Uyarı
Bu makale, Microsoft'un artık destek sağlamadığı ürünler ile ilgili olarak yazılmıştır. Bu nedenle, bu makale "olduğu gibi" sağlanmıştır ve bundan sonra güncelleştirilmeyecektir.