Τρόπος λήψης της IHTMLDocument2 από ένα HWND

Αποποίηση ευθυνών για περιεχόμενο της Γνωσιακής βάσης που έχει αποσυρθεί

Αυτό το άρθρο αφορά προϊόντα για τα οποία η Microsoft δεν παρέχει πλέον υποστήριξη. Συνεπώς, το παρόν άρθρο παρέχεται "ως έχει" και δεν θα ενημερώνεται πλέον.

Σύνοψη

Αυτό το άρθρο παρουσιάζει τον τρόπο για τη λήψη της διασύνδεσης 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)
{
TCHARbuf[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:

Για πληροφορίες σχετικά με την υποστήριξη του Microsoft Active Accessibility που παρέχεται από το MSHTML στοιχείο του Microsoft Internet Explorer, επισκεφθείτε την ακόλουθη τοποθεσία Web:
Για περισσότερες πληροφορίες, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:

176792 Τρόπος σύνδεσης σε μια περίοδο λειτουργίας του Internet Explorer

Ιδιότητες

Αναγνωριστικό άρθρου: 249232 - Τελευταία αναθεώρηση: 11 Ιαν 2017 - Αναθεώρηση: 2

Σχόλια