Bagaimana untuk mendapatkan IHTMLDocument2 dari HWND

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
Artikel ini telah diarsipkan. Artikel ditawarkan dalam bentuk "apa adanya" dan tidak akan dapat diperbarui lagi.
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 accessvoid 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:Untuk selengkapnya tentang dukungan Microsoft aktif aksesibilitas yang disediakan oleh komponen MSHTML Microsoft Internet Explorer, kunjungi situs web berikut:Untuk informasi lebih lanjut, klik nomor artikel berikut ini untuk melihat artikel di dalam Pangkalan Pengetahuan Microsoft:
176792Cara menyambung ke contoh menjalankan Internet Explorer
Aksesibilitas aktif kumpulan dokumen object model hwnd

Peringatan: Artikel ini telah diterjemahkan secara otomatis

Properti

ID Artikel: 249232 - Tinjauan Terakhir: 12/05/2015 18:00:49 - Revisi: 3.0

Microsoft Internet Explorer 4.01 Service Pack 1

  • kbnosurvey kbarchive kbhowto kbmshtml kbwebbrowser kbmt KB249232 KbMtid
Tanggapan