ΠΛΗΡΟΦΟΡΙΕΣ: Πρόσβαση στο μοντέλο αντικειμένου από μέσα σε ένα στοιχείο ελέγχου ActiveX

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

Σε αυτήν τη σελίδα

Περίληψη

Όταν συντάσσετε ένα στοιχείο ελέγχου ActiveX για το Internet, συχνά μπορεί να χρειαστεί να αποκτήσετε πρόσβαση στο μοντέλο αντικειμένου της σελίδας HTML. Το μοντέλο αντικειμένου επιτρέπει την πρόσβαση σε διάφορα στοιχεία μέσα στη σελίδα HTML.

Αυτό το άρθρο ασχολείται με την πρόσβαση στο μοντέλο αντικειμένου από τη Visual C++ και Visual Basic και καλύπτει και Internet Explorer (IE) 3.x και 4.0.

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

ΤΟ ΜΟΝΤΈΛΟ ΑΝΤΙΚΕΙΜΈΝΟΥ

Μπορείτε να βρείτε στην τεκμηρίωση για το μοντέλο αντικειμένου του κιτ ανάπτυξης λογισμικού ActiveX (SDK) και του SDK του προγράμματος-πελάτη Internet για τον Internet Explorer 3.x και 4.0, αντίστοιχα. Το μοντέλο αντικειμένου τεκμηριώνεται ως εξής:
   window
      - location
      - frames
      - ...
      - document
         - links
         - forms
            - elements
				
Το παράθυρο είναι στο ανώτατο επίπεδο της ιεραρχίας αυτής. Το παράθυρο έχει μια ιδιότητα εγγράφου, το οποίο με τη σειρά έχει το δικό της σύνολο ιδιοτήτων. Για περισσότερες λεπτομέρειες ανατρέξτε στο SDK για την κατάλληλη.

ΓΙΑΤΊ ΠΡΈΠΕΙ ΝΑ ΧΡΕΙΆΖΕΤΑΙ ΈΝΑ ΣΤΟΙΧΕΊΟ ΕΛΈΓΧΟΥ ΓΙΑ ΝΑ ΑΠΟΚΤΉΣΕΤΕ ΠΡΌΣΒΑΣΗ ΣΤΟ ΜΟΝΤΈΛΟ ΑΝΤΙΚΕΙΜΈΝΟΥ;

Ένα στοιχείο ελέγχου πρόσβασης (και σε ορισμένες περιπτώσεις τροποποίηση) πληροφορίες σχετικά με τη σελίδα που ενσωματώνεται στο. Για να το κάνετε αυτό, το στοιχείο ελέγχου πρέπει να έχει πρόσβαση στο μοντέλο αντικειμένου. Για παράδειγμα, ένα στοιχείο ελέγχου μπορεί να απαριθμήσει όλα τα στοιχεία σε μια σελίδα. Στην περίπτωση της δυναμικής HTML, το στοιχείο ελέγχου πρόσβαση σε οποιοδήποτε στοιχείο HTML της σελίδας.

ΚΑΤΆ ΤΗΝ ΠΡΌΣΒΑΣΗ ΣΤΟ ΜΟΝΤΈΛΟ ΑΝΤΙΚΕΙΜΈΝΟΥ

The object model is implemented using automation and COM interfaces. Once the control is able to access the top level of the object model, then it can drill down the object model using automation or COM interfaces. This article discusses both steps:
  1. Getting to the top level of the object model.
  2. Drilling down into the object model.

GETTING TO THE TOP LEVEL OF THE OBJECT MODEL (VISUAL C++)

Using IWebBrowserApp (for Internet Explorer 3.x and 4.x)

IWebBrowserApp is an interface that is exposed by the Web Browser control. It has a document property (or get_document method if using vtable interface) that allows access to the automation object of the active document. If the document is an HTML document, then the automation object has a script property that gives the window object of the scripting object model. So, for a control to reach the object model, the following must be done:

  • Obtain IWebBrowserApp from its containing HTML page.
  • Get the document property of IWebBrowserApp.
  • Get the script property of the document.
This will put you at the top level (window object) in the object model. Then use automation to drill down further.

Obtaining the IWebBrowserApp

Getting the IWebBrowserApp is a two-step process:
  1. Use the IOleClientSite pointer to get IServiceProvider. In an ATL control, this pointer can be obtained by accessing the m_spClientSite member of the control. In an MFC control, this pointer can be obtained by calling COleControl::GetClientSite(). The control has access to the IOleClientSite interface of its container. It can use that pointer to QI for IServiceProvider:
    pClientSite->QueryInterface(IID_IServiceProvider,
                              (void **)&pISP);
    						
  2. Use the IServiceProvider to obtain IWebBrowserApp. Using the IServiceProvider, a QueryService can be done to get the IWebBrowserApp:
          pISP->QueryService(SID_SWebBrowserApp, IID_IWebBrowserApp,
                            (void **)&pIWebBrowserApp));
    						
Also, if you are programming for Internet Explorer 4 or later, you can obtain a pointer to the IWebBrowser2 interface of the container with this code:
   pISP->QueryService(IID_IWebBrowserApp, IID_IWebBrowser2,
     (void **)&pIWebBrowser2));
				
QueryService is different from QueryInterface in that it does not have to follow the identity rule in COM. So, if the object itself does not implement IWebBrowserApp, it can delegate to the containing object and QueryService it for a IWebBrowserApp.

Get the Document Property of IWebBrowserApp

IWebBrowserApp is a dual interface. It has a document property and also a get_Document method. Either can be used to get the IDispatch of the active document. Once you have the IDispatch, then the script property can be obtained.

Get the Script Property of the Document

Using the IDispatch obtained above, get the script property using automation. This will give the top level in the scripting object model, or the window object.

GETTING THE TOP LEVEL OF THE OBJECT MODEL (VISUAL C++)

(Internet Explorer 4.0 ONLY)

Internet Explorer 4.0 makes accessing the object model much easier. This is a one-step process:
  1. Get the IHTMLDocument2 from the IClientSite.

Obtaining IHTMLDocument2 from IOleClientSite

Every control has access to IClientSite of its container. QI-ing for IHTMLDocument2 from the client site should give the scripting object model.
   IOleContainer* pContainer = NULL;
   IHTMLDocument2* pDoc = NULL;

   pClientSite->GetContainer( &pContainer );
   if ( pContainer != NULL )
      pContainer->QueryInterface( &IID_IHTMLDocument2, &pDoc );
				
Check the return value from the above call. If the control is not embedded within an HTML page, or if the container is not Internet Explorer 4.0, then the above call will fail.

Getting IHTMLDocument2 gives the document object in the scripting object model. Then either automation interfaces or vtable interfaces can be used to drill down the object model.

GETTING THE TOP LEVEL OF OBJECT MODEL (VISUAL BASIC)

The parent property of the UserControl can be used to access the automation object. From the Visual Basic documentation for the parent property, Internet Explorer returns an object whose Script property returns the IOmWindow object.

The example given in Visual Basic documentation is as follows:
Parent.Script.get_document.bgColor = "Blue"
				
The Parent property gets to the automation object. Then the script property gives us the window object of the scripting object model. Then the different properties and methods can be accessed just like any other automation object.

The above line of code should read as follows:
Parent.Script.document.bgColor = "Blue"
				
Even though using get_document is correct in Internet Explorer 3.x, it will not work in Internet Explorer 4.0. The correct method is to use the document property. This will work both in Internet Explorer 3.x and 4.0.

DRILLING DOWN THE OBJECT MODEL

Drilling down the object model is as simple as calling the properties and methods using automation. For Internet Explorer 3.x, use only automation. For Internet Explorer 4.0, vtable interfaces can be used. For more information refer to the driller sample in the Internet Client SDK.

Ιδιότητες

Αναγν. άρθρου: 172763 - Τελευταία αναθεώρηση: Σάββατο, 18 Δεκεμβρίου 2010 - Αναθεώρηση: 2.0
Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
  • Microsoft Internet Client Software Development Kit 4.01
Λέξεις-κλειδιά: 
kbDSupport kbFAQ kbinfo kbmt KB172763 KbMtel
Μηχανικά μεταφρασμένο
ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.
Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:172763

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

 

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