วิธีการที่ได้รับ IHTMLDocument2 จากการ HWND

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 249232 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

สรุป

บทความนี้แสดงวิธีการได้รับอินเทอร์เฟซ IHTMLDocument2 จากการ HWND ถ้ามีการติดตั้ง Microsoft ที่ใช้งานอยู่สำหรับการเข้าถึง (MSAA) คุณสามารถส่งข้อความ WM_HTML_GETOBJECT ไปยังหน้าต่างของเอกสาร (มีหน้าต่างเป็นคลาส "Internet Explorer_Server") และส่งผลไปฟังก์ชันการ MSAA, ObjectFromLresultเพื่อรับตัวชี้ IHTMLDocument2 อินเทอร์เฟซทั้งหมดจาก SendMessage แล้ว

ข้อมูลเพิ่มเติม

คุณต้องมีการเข้าถึงที่ใช้งานอยู่คอมโพเนนต์ที่ติดตั้งบนระบบสำหรับรหัสอธิบายไว้ในส่วนนี้จะทำงาน นักพัฒนาไคลเอนต์สามารถใช้ SDK เพื่อพัฒนา และปรับปรุงการใช้งานความช่วยเหลือ ถ้าคุณรวมรุ่นล่าสุดของการเข้าถึงที่ใช้งานอยู่ และแจกจ่ายเวอร์ชันใหม่ของความช่วยเหลือของคุณ คุณต้องกระจายคอมโพเนนต์ขณะใช้งานจริง (RDK) สำหรับไคลเอนต์ที่ได้รับการพัฒนา สำหรับ Microsoft Windows 95, Windows 98, Windows NT 4.0 Service Pack 4 หรือ 5 คุณไม่จำเป็นต้องรวม RDK ที่สำหรับไคลเอนต์ที่ได้รับการพัฒนา สำหรับ Windows 2000 เท่านั้น หรือ Windows NT 4.0 กับ Service Pack 6 ส่วนประกอบใหม่รวมอยู่ในระบบปฏิบัติการเหล่านี้

ดูส่วน "อ้างอิง" ของบทความนี้สำหรับข้อมูลเกี่ยวกับการเข้าถึงที่ใช้งานอยู่และตำแหน่งที่จะดาวน์โหลด 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();
}
				
หมายเหตุ: ก่อนที่ Internet Explorer 5.5 เฟรมถูกนำมาใช้ โดยการจัดการโฮสต์สำหรับอินสแตนซ์ใหม่ของ Shdocvw.dll และแต่ละเฟรมมีหน้าต่างแยกต่างหากสำหรับการเชื่อมโยงด้วย Internet Explorer 5.5 เฟรมดั้งเดิมสำหรับประสิทธิภาพที่ดีที่ประมวลผล และเฟรมทั้งหมดจะแสดงผล โดยอินสแตนซ์เดียวของ Shdocvw.dll เนื่องจากจะไม่มีการ HWND สำหรับแต่ละเฟรม สำหรับ Internet Explorer 5.5 และรุ่นที่ใหม่กว่า ตัวอย่างรหัสที่อธิบายไว้ในส่วนนี้จะทำงานการเข้าถึงเอกสารของหน้าต่างหลักเท่านั้น คุณยังคงสามารถเข้าถึงเอกสารของแต่ละเฟรม โดยใช้ชุดเฟรมของเอกสารหลัก

ข้อมูลอ้างอิง

SDK สำหรับนักพัฒนาและ RDK ซึ่งติดตั้งคอมโพเนนต์ขณะใช้งานการเข้าถึงที่ใช้งานอยู่บนระบบปฏิบัติการ สามารถดาวน์โหลดจากเว็บไซต์ต่อไปนี้ของ Microsoft:
http://www.microsoft.com/downloads/details.aspx?FamilyID=9b14f6e1-888a-4f1d-b1a1-da08ee4077df&DisplayLang=en
สำหรับข้อมูลเกี่ยวกับการสนับสนุนสำหรับการเข้าถึงที่ใช้งานอยู่ของ Microsoft ที่ให้ไว้ โดยคอมโพเนนต์ MSHTML ของ Microsoft Internet Explorer แวะไปเว็บไซต์ต่อไปนี้:สำหรับข้อมูลเพิ่มเติม คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
176792วิธีการเชื่อมต่อกับอินสแตนซ์ที่กำลังทำงานของ Internet Explorer

คุณสมบัติ

หมายเลขบทความ (Article ID): 249232 - รีวิวครั้งสุดท้าย: 30 พฤษภาคม 2556 - Revision: 3.0
ใช้กับ
  • Microsoft Internet Explorer 4.01 Service Pack 1
Keywords: 
kbhowto kbmshtml kbwebbrowser kbmt KB249232 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:249232
การปฏิเสธความรับผิดชอบในเนื้อหาของ KB ที่จะไม่มีการปรับปรุงอีกต่อไป
บทความนี้กล่าวถึงผลิตภัณฑ์ที่ Microsoft ไม่มีการสนับสนุนอีกต่อไป เนื้อหาของบทความจึงมีการนำเสนอ "ตามลักษณะที่เป็น" และจะไม่มีการปรับปรุงข้อมูลอีก

ให้ข้อเสนอแนะ

 

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