Bagaimana untuk mendapatkan IHTMLDocument2 dari HWND

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 249232 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

Ringkasan

Artikel ini menunjukkan bagaimana untuk mendapatkan antarmuka IHTMLDocument2 dari HWND. Jika Microsoft aktif aksesibilitas (MSAA) terinstal, Anda dapat mengirim pesan WM_HTML_GETOBJECT ke jendela kumpulan dokumen (dengan kelas jendela "Internet Explorer_Server") dan kemudian lulus hasil dari SendMessage ke fungsi MSAA, ObjectFromLresult, untuk mendapatkan sepenuhnya bahagian IHTMLDocument2 pointer.

Informasi lebih lanjut

Anda harus memiliki komponen aktif aksesibilitas yang diinstal pada sistem untuk kode yang dijelaskan dalam bagian ini untuk bekerja. Klien pengembang dapat menggunakan SDK untuk mengembangkan dan memutakhirkan aktif aksesibilitas aids. Jika Anda memasukkan versi terbaru dari aktif aksesibilitas dan mendistribusikan versi baru dari aids aksesibilitas Anda, Anda harus mendistribusikan runtime komponen (RDK) untuk klien yang telah dikembangkan untuk Microsoft Windows 95, Windows 98, atau Windows NT 4.0 dengan Service Pack 4 atau 5. Hal ini tidak perlu untuk memasukkan RDK untuk klien dikembangkan semata-mata untuk Windows 2000 atau Windows NT 4.0 dengan Service Pack 6. Komponen baru sudah termasuk dalam sistem operasi ini.

Lihat bagian "Referensi" dari artikel ini untuk informasi tentang aksesibilitas aktif dan di mana untuk men-download SDK aksesibilitas aktif.
#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();
}
				
Catatan: Sebelum Internet Explorer 5.5, frame dilaksanakan oleh hosting sebuah instance baru dari Shdocvw.dll, dan setiap frame memiliki jendela terpisah yang terkait dengannya. Internet Explorer 5.5 mengimplementasikan asli bingkai untuk kinerja yang lebih baik, dan semua frame yang diberikan oleh contoh sama Shdocvw.dll. Karena tidak akan ada HWND untuk setiap frame untuk Internet Explorer 5.5 dan kemudian, kode contoh yang dijelaskan dalam bagian ini akan bekerja untuk mendapatkan kumpulan jendela dokumen utama hanya. Anda masih bisa mendapatkan setiap frame kumpulan dokumen dengan menggunakan frame koleksi kumpulan dokumen utama.

Referensi

SDK untuk pengembang dan RDK, yang menginstal komponen runtime aktif aksesibilitas ke sistem operasi, dapat didownload dari situs web Microsoft berikut:
http://www.Microsoft.com/downloads/Details.aspx?FamilyID=9b14f6e1-888a-4f1d-b1a1-da08ee4077df&DisplayLang=en
Untuk selengkapnya tentang dukungan Microsoft aktif aksesibilitas yang disediakan oleh komponen MSHTML Microsoft Internet Explorer, kunjungi situs web berikut:
Tentang dukungan aksesibilitas aktif
Untuk informasi lebih lanjut, klik nomor artikel berikut ini untuk melihat artikel di dalam Pangkalan Pengetahuan Microsoft:
176792Cara menyambung ke contoh menjalankan Internet Explorer

Properti

ID Artikel: 249232 - Kajian Terakhir: 30 Mei 2013 - Revisi: 3.0
Berlaku bagi:
  • Microsoft Internet Explorer 4.01 Service Pack 1
Kata kunci: 
kbhowto kbmshtml kbwebbrowser kbmt KB249232 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan oleh perangkat lunak penerjemahan mesin Microsoft, dan mungkin telah diedit oleh Masyarakat Microsoft melalui teknologi CTF dan bukan oleh seorang penerjemah profesional. Microsoft menawarkan baik artikel yang diterjemahkan oleh manusia maupun artikel hasil editan terjemahan oleh mesin/komunitas, sehingga Anda dapat mengakses semua artikel di Sentra Pengetahuan yang kami miliki dalam berbagai bahasa. Namun artikel hasil editan mesin atau bahkan komunitas tidak selalu sempurna. Artikel ini dapat mengandung kesalahan dalam hal kosa kata, sintaksis atau tatabahasa, sangat mirip dengan penutur asing yang membuat kekeliruan ketika berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab atas ketidakakuratan, kesalahan atau kerugian apa pun akibat dari kekeliruan dalam penerjemahan isi atau penggunaannya oleh pelanggan kami. Microsoft juga akan senantiasa memperbarui perangkat lunak penerjemahan mesin dan alat untuk menyempurnakan Editan Hasil Penerjemahan Mesin.
Klik disini untuk melihat versi Inggris dari artikel ini: 249232
Sanggahan Konten KB yang Tidak Lagi Diperbarui
Artikel ini berisi tentang produk yang tidak lagi didukung oleh Microsoft. Oleh karena itu, artikel ini disajikan ?sebagaimana adanya? dan tidak akan diperbarui.

Berikan Masukan

 

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