Πώς θα IHTMLDocument2 από ένα HWND

Μεταφράσεις άρθρων Μεταφράσεις άρθρων
Αναγν. άρθρου: 249232 - Δείτε τα προϊόντα στα οποία αναφέρεται το συγκεκριμένο άρθρο.
Ανάπτυξη όλων | Σύμπτυξη όλων

Περίληψη

Αυτό το άρθρο περιγράφει τον τρόπο για τη λήψη της διασύνδεσης IHTMLDocument2 από ένα HWND. Εάν είναι εγκατεστημένο το Microsoft Active Accessibility (MSAA), μπορείτε να στείλετε το μήνυμα WM_HTML_GETOBJECT στο παράθυρο του εγγράφου (με την κλάση παραθύρου "Internet Explorer_Server") και, στη συνέχεια, να περάσει το αποτέλεσμα από SendMessage σε μια συνάρτηση MSAA, ObjectFromLresult, για να λάβετε ένα πλήρως δρομολογημένο δείκτη IHTMLDocument2.

Περισσότερες πληροφορίες

Πρέπει να έχετε στοιχεία Active Accessibility που είναι εγκατεστημένα στο σύστημα για τον κώδικα που περιγράφεται σε αυτήν την ενότητα για να εργαστείτε. Οι προγραμματιστές του προγράμματος-πελάτη να χρησιμοποιήσετε το SDK για την ανάπτυξη και ενημέρωση Active άτομα με ειδικές ανάγκες. Εάν ενσωματώσετε την πιο πρόσφατη έκδοση της υπηρεσίας Active Accessibility και διανομή νέες εκδόσεις σας άτομα με ειδικές ανάγκες, πρέπει να διανείμετε τα στοιχεία χρόνου εκτέλεσης (RDK) για υπολογιστές-πελάτες που έχουν αναπτυχθεί για τα Microsoft Windows 95, Windows 98 ή Windows NT 4.0 Service Pack 4 ή 5. Δεν χρειάζεται να συμπεριλάβετε το RDK για πελάτες που έχουν αναπτυχθεί αποκλειστικά για τα Windows 2000 ή των Windows NT 4.0 με Service Pack 6. Τα νέα στοιχεία έχουν ήδη συμπεριληφθεί σε αυτά τα λειτουργικά συστήματα.

Ανατρέξτε στην ενότητα "Αναφορές" αυτού του άρθρου για πληροφορίες σχετικά με το Active Accessibility και πού μπορείτε να λάβετε το SDK Active Accessibility.
#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, το οποίο εγκαθιστά τα στοιχεία χρόνου εκτέλεσης Active Accessibility στο λειτουργικό σύστημα, να κάνετε λήψη από την ακόλουθη τοποθεσία της Microsoft στο Web:
http://www.Microsoft.com/downloads/details.aspx?FamilyId=9b14f6e1-888a-4f1d-b1a1-da08ee4077df&displaylang=en
Για πληροφορίες σχετικά με την υποστήριξη της Microsoft Active Accessibility που παρέχεται από το MSHTML στοιχείο του Microsoft Internet Explorer, επισκεφθείτε την ακόλουθη τοποθεσία Web:
Σχετικά με την υποστήριξη Active Accessibility
Για περισσότερες πληροφορίες, κάντε κλικ στον αριθμό του άρθρου παρακάτω για να προβάλετε το άρθρο της Γνωσιακής βάσης της Microsoft:
176792Πώς να συνδεθείτε σε μια περίοδο λειτουργίας του Internet Explorer

Ιδιότητες

Αναγν. άρθρου: 249232 - Τελευταία αναθεώρηση: Πέμπτη, 30 Μαΐου 2013 - Αναθεώρηση: 3.0
Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
  • Microsoft Internet Explorer 4.01 Service Pack 1
Λέξεις-κλειδιά: 
kbhowto kbmshtml kbwebbrowser kbmt KB249232 KbMtel
Μηχανικά μεταφρασμένο
ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.
Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη: 249232
Αποποίηση ευθυνών για περιεχόμενο της Γνωσιακής Βάσης (KB) που έχει αποσυρθεί
This article was written about products for which Microsoft no longer offers support. Therefore, this article is offered "as is" and will no longer be updated.

Αποστολή σχολίων

 

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