Comment faire pour Access méthodes/propriétés de conteneur à partir du script

IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d’articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d’avoir accès, dans votre propre langue, à l’ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s’exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s’efforce aussi continuellement de faire évoluer son système de traduction automatique.

La version anglaise de cet article est la suivante: 188015
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
Résumé
Lorsque vous hébergez le contrôle WebBrowser dans une application Visual C++, il peut être nécessaire pour accéder aux méthodes ou propriétés du conteneur à partir d'un script sur une page Web. Cet article décrit comment procéder en implémentant l'interface IDocHostUIHandler.
Plus d'informations
En implémentant l'interface IDocHostUIHandler, vous pouvez contrôler la plupart des fonctionnalités d'interface utilisateur du contrôle WebBrowser dans votre application d'hébergement. IDocHostUIHandler également vous permet d'étendre le modèle d'objet DHTML (Dynamic HTML) pour accéder aux méthodes et propriétés du conteneur de script.

La méthode GetExternal() de IDocHostUIHandler fournit cette fonctionnalité. Lorsque le script sur une page Web appelle «window.external.yourMethod», le contrôle WebBrowser appelle votre méthode GetExternal pour récupérer un pointeur vers le IDispatch de votre application hôte. Il est par ce pointeur que le contrôle WebBrowser est capable d'accéder à vos méthodes et propriétés.

Une fois que le contrôle WebBrowser a un pointeur vers le IDispatch du conteneur, il appelle ensuite IDispatch::GetIDsOfNames() pour obtenir le DISPID de la méthode ou propriété appelée à partir d'un script, yourMethod dans ce cas.

Enfin, les appels de contrôle WebBrowser IDispatch::Invoke () avec le DISPID extraite GetIDsOfNames().

Voici les étapes à suivre pour étendre le modèle d'objet DHTML pour pouvoir accéder au conteneur méthodes et propriétés à partir du script :
  1. Mettre en œuvre IDocHostUIHandler.
  2. Implémentez la méthode IDocHostUIHandler::GetExternal. Définir la IDispatch paramètre à celui de votre conteneur comme suit :
    STDMETHOD(GetExternal)(IDispatch** ppDispatch){   // Assumes you inherit from IDispatch   *ppDispatch = (IDispatch*)this;   (*ppDispatch)->AddRef();   return S_OK;}					
  3. Retourner l'expédition ID (DISPID) de votre méthode ou propriété de GetIDsOfNames. Si vous avez ajouté votre méthode ou propriété à l'aide d'un Assistant, cela sera effectuée pour vous.
  4. Mettre en œuvre le DISPID de votre méthode ou propriété dans votre implémentation de IDispatch::Invoke comme suit :
    STDMETHODIMP CAtlBrCon::Invoke(DISPID dispidMember, REFIID riid,                               LCID lcid, WORD wFlags,                               DISPPARAMS* pDispParams,                               VARIANT* pvarResult,                               EXCEPINFO* pExcepInfo, UINT* puArgErr){   switch (dispidMember)   {      case DISPID_MYMETHOD_OR_PROPERTY:         // Do something here      default:         return E_INVALIDARG;   }   return S_OK;}					
  5. Appeler une méthode ou une propriété du conteneur à partir d'un script comme suit :
     <SCRIPT LANGUAGE="VBScript">    Sub SomeControl_OnClick       window.external.yourMethod    End Sub </SCRIPT>					
Références
Pour plus d'informations sur les technologies abordées dans cet article, reportez-vous à la documentation concernant les avancées les interfaces d'hébergement et IDocHostUIHandler dans MSDN Online Web Workshop : (c) 1998 Microsoft Corporation, tous droits réservés. Contribution de Scott Roberts, Microsoft Corporation

Avertissement : Cet article a été traduit automatiquement.

Propriétés

ID d'article : 188015 - Dernière mise à jour : 01/23/2014 12:42:46 - Révision : 2.1

Microsoft Internet Explorer 4.0 Édition 128 bits, Microsoft Internet Explorer 4.01 Service Pack 2, Microsoft Internet Explorer 4.01 Service Pack 1, Microsoft Internet Explorer 5.0, Microsoft Internet Explorer 5.5

  • kbnosurvey kbarchive kbmt kbfaq kbhowto kbscript kbwebbrowser KB188015 KbMtfr
Commentaires
ERROR: at System.Diagnostics.Process.Kill() at Microsoft.Support.SEOInfrastructureService.PhantomJS.PhantomJSRunner.WaitForExit(Process process, Int32 waitTime, StringBuilder dataBuilder, Boolean isTotalProcessTimeout)