Làm th? nào đ? có đư?c IHTMLDocument2 t? m?t HWND

ID c?a bài: 249232 - Xem s?n ph?m mà bài này áp d?ng vào.
Bung t?t c? | Thu g?n t?t c?

TÓM T?T

Bài vi?t này cho th?y làm th? nào đ? có đư?c giao di?n IHTMLDocument2 t? m?t HWND. N?u Microsoft ho?t đ?ng kh? năng ti?p c?n (MSAA) đư?c cài đ?t, b?n có th? g?i tin nh?n WM_HTML_GETOBJECT đ?n c?a s? c?a tài li?u (v?i l?p window "Internet explorer_server") và sau đó vư?t qua k?t qu? t? SendMessage đ?n m?t ch?c năng MSAA, ObjectFromLresult, đ? có đư?c m?t con tr? IHTMLDocument2 đ?y đ? marshaled.

THÔNG TIN THÊM

B?n ph?i có kh? năng ti?p c?n ho?t đ?ng các thành ph?n cài đ?t trên h? th?ng cho các m? đư?c di?n t? trong ph?n này đ? làm vi?c. Các nhà phát tri?n khách hàng có th? s? d?ng SDK đ? phát tri?n và c?p nh?t các ho?t đ?ng tr? aids. N?u b?n k?t h?p Phiên b?n m?i nh?t c?a kh? năng ti?p c?n ho?t đ?ng và phân ph?i các phiên b?n m?i c?a aids kh? năng ti?p c?n c?a b?n, b?n ph?i phát hành các thành ph?n th?i gian ch?y (RDK) cho các khách hàng đ? đư?c phát tri?n cho Microsoft Windows 95, Windows 98, ho?c Windows NT 4.0 v?i Service Pack 4 ho?c 5. Nó không ph?i là c?n thi?t đ? bao g?m RDK cho khách hàng phát tri?n ch? duy nh?t cho Windows 2000 ho?c Windows NT 4.0 v?i Service Pack 6. Các thành ph?n m?i đ? đư?c bao g?m trong các h? đi?u hành.

H?y xem ph?n "Tham kh?o" c?a bài vi?t này thông tin v? kh? năng ti?p c?n ho?t đ?ng và nơi đ? t?i v? kh? năng ti?p c?n SDK ho?t đ?ng.
#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();
}
				
CHÚ Ý: Trư?c khi Internet Explorer 5.5, khung đ? đư?c th?c hi?n b?ng cách lưu tr? m?t trư?ng h?p m?i c?a Shdocvw.dll, và m?i khung có c?a s? riêng g?n li?n v?i nó. Internet Explorer 5.5 th?c hi?n b?n x? khung cho hi?u su?t t?t hơn, và t?t c? các khung đư?c k?t xu?t b?i cùng m?t th? hi?n c?a Shdocvw.dll. K? t? khi s? không có m?t HWND cho m?i khung cho Internet Explorer 5.5 và sau đó, m?u m? đư?c di?n t? trong ph?n này s? làm vi?c đ? có đư?c vào tài li?u c?a c?a s? chính ch?. B?n v?n có th? cho m?i khung tài li?u b?ng cách s? d?ng b? sưu t?p các khung h?nh chính tài li?u.

THAM KH?O

SDK cho nhà phát tri?n và RDK, cài đ?t các thành ph?n th?i gian ch?y ho?t đ?ng kh? năng truy c?p vào h? đi?u hành, có th? đư?c t?i v? t? Microsoft Web site sau c?a:
http://www.Microsoft.com/downloads/details.aspx?FamilyID = 9b14f6e1-888a-4f1d-b1a1-da08ee4077df & DisplayLang = en
Thông tin v? kh? năng ti?p c?n ho?t đ?ng Microsoft h? tr? đư?c cung c?p b?i các thành ph?n MSHTML c?a Microsoft Internet Explorer, ghé thăm Web site sau:
http://MSDN.Microsoft.com/workshop/Browser/Accessibility/Overview/Overview.asp
Đ? bi?t thêm thông tin, h?y b?m vào s? bài vi?t sau đ? xem bài vi?t trong Cơ s? Ki?n th?c Microsoft:
176792Làm th? nào đ? k?t n?i v?i m?t trư?ng h?p ho?t đ?ng c?a Internet Explorer

Thu?c tính

ID c?a bài: 249232 - L?n xem xét sau cùng: 21 Tháng Tám 2011 - Xem xét l?i: 2.0
Áp d?ng
  • Microsoft Internet Explorer 4.01 Service Pack 1
T? khóa: 
kbhowto kbmshtml kbwebbrowser kbmt KB249232 KbMtvi
Máy d?ch
QUAN TRỌNG: Bài vi?t này đư?c d?ch b?ng ph?n m?m d?ch máy c?a Microsoft ch? không ph?i do con ngư?i d?ch. Microsoft cung c?p các bài vi?t do con ngư?i d?ch và c? các bài vi?t do máy d?ch đ? b?n có th? truy c?p vào t?t c? các bài vi?t trong Cơ s? Ki?n th?c c?a chúng tôi b?ng ngôn ng? c?a b?n. Tuy nhiên, bài vi?t do máy d?ch không ph?i lúc nào c?ng hoàn h?o. Lo?i bài vi?t này có th? ch?a các sai sót v? t? v?ng, cú pháp ho?c ng? pháp, gi?ng như m?t ngư?i nư?c ngoài có th? m?c sai sót khi nói ngôn ng? c?a b?n. Microsoft không ch?u trách nhi?m v? b?t k? s? thi?u chính xác, sai sót ho?c thi?t h?i nào do vi?c d?ch sai n?i dung ho?c do ho?t đ?ng s? d?ng c?a khách hàng gây ra. Microsoft c?ng thư?ng xuyên c?p nh?t ph?n m?m d?ch máy này.
Nh?p chu?t vào đây đ? xem b?n ti?ng Anh c?a bài vi?t này:249232
Khước từ Nội dung trong Cơ sở Kiến thức Không còn được hỗ trợ
Bài vi?t này nói v? các s?n ph?m mà Microsoft không c?n h? tr? n?a. Do đó, bài vi?t này đư?c cung c?p "nguyên b?n" và s? không đư?c c?p nh?t.

Cung cấp Phản hồi