public virtual void DocumentComplete(object pDisp, ref object uRL) { DWebBrowserEvents2_DocumentCompleteEvent documentcompleteEvent = new DWebBrowserEvents2_DocumentCompleteEvent(pDisp, uRL); this.parent.RaiseOnDocumentComplete(this.parent, documentcompleteEvent); uRL = documentcompleteEvent.uRL; }
/// <summary> /// Event handler for DocumentComplete. We fire 2 events out of this event handler: /// FrameComplete -- frame within a frameset completes /// DocumentComplete -- entire document (page or frameset) completes /// Both of these events provide the URL and the IDispatch of the document /// object as part of their event arguments. /// </summary> /// <param name="sender">object sending the event</param> /// <param name="e">event parameters</param> private void AxWebBrowser_DocumentComplete( object sender, DWebBrowserEvents2_DocumentCompleteEvent e) { // Create native event args based on the passed event args BrowserDocumentEventArgs evtArgs = new BrowserDocumentEventArgs(e.uRL.ToString(), e.pDisp); // Check to see if this is the full document (page or frameset). This // technique is based on the article "HOWTO: Determine When a Page Is // Done Loading in WebBrowser Control" at: // http://support.microsoft.com/default.aspx?scid=KB;en-us;q180366 IntPtr thisPtr = Marshal.GetIDispatchForObject(e.pDisp); IntPtr browserPtr = Marshal.GetIDispatchForObject(m_browser.GetOcx()); bool isDocument = (thisPtr == browserPtr); Marshal.Release(thisPtr); Marshal.Release(browserPtr); if (isDocument) { // TODO: update address bar on DocumentComplete // fire to listeners OnDocumentComplete(evtArgs); } else // this was a frame within a frameset { // fire to listeners OnFrameComplete(evtArgs); } }
internal void RaiseOnDocumentComplete(object sender, DWebBrowserEvents2_DocumentCompleteEvent e) { if ((this.DocumentComplete != null)) { this.DocumentComplete(sender, e); } }