2009-05-18 14 views
0

Salutations!Comment capturer des événements tirés à partir de la nouvelle fenêtre Popup IE

Situation:

Mon ActiveX DLL contient un navigateur Web personnalisé. Le navigateur Web affiche une page Web. Lorsque l'utilisateur clique sur le lien dans la page affichée, une nouvelle fenêtre IE apparaît et accède à l'URL du lien cliqué.

Question:

Comment puis-je connaître les événements et DocumenComplete NavigateComplete tirés de la NOUVEAU fenêtre pop-up IE?

Ce que j'ai déjà essayé:

J'ai essayé de capturer le * NewWindow2 (IDispatch ** ppDisp, VARIANT_BOOL Annuler) événement tiré de webbrowser sur mesure (pas nouvelle fenêtre IE), et obtenu le pointeur ppDisp qui pointe vers le nouveau windown IE. J'ai essayé d'utiliser ce pointeur comme source d'événement pour conseiller ou se connecter au gestionnaire d'événements (IDispatch :: Invoke) pour la capture d'événements. Cependant cela ne fonctionne pas. Peut-être que l'échec est dû au fait que le document dans la nouvelle fenêtre IE n'a pas encore été chargé. Je ne suis pas sûr.

Pouvez-vous s'il vous plaît me suggérer ce que je devrais faire?

Merci!

Répondre

1

Vous n'obtenez pas le nouveau navigateur Web dans ppDisp. Vous en créez un, évidez des événements et renvoyez sa propriété d'application dans ppDisp à l'événement.

+0

Pouvez-vous s'il vous plaît expliquer la différence entre l'obtention nouveau pointeur WebBrowser de ppDisp et la création de nouveau? Selon MSDN, ppDisp est le pointeur reçoit le pointeur d'interface IDispatch d'un nouvel objet WebBrowser. – bionicoder

+0

Comme je l'ai dit, vous n'obtenez pas le nouveau navigateur Web de PPDisp. Vous créez un nouveau contrôle webbrowser, récupérez ses événements et obtenez sa propriété d'application. Mettez la valeur de retour de la propriété d'application dans ppDisp. –

1
void CYourDlg::OnNewWindow2(LPDISPATCH FAR* ppDisp, BOOL FAR* Cancel) 
{ 
    CDlgNewWB* dlgNewWB = new CYourDlg; 
    this.listDialogWeb.Add(dlgNewWB); 
    dlgNewWB ->Create(IDD_WBDLG_DIALOG); 

    dlgNewWB ->m_webBrowser.SetRegisterAsBrowser(TRUE); 

    *ppDisp = dlgNewWB ->m_webBrowser.GetApplication(); 

}