protected virtual void WaitForFramesToComplete(IHTMLDocument2 maindocument) { var mainHtmlDocument = (HTMLDocument)maindocument; var framesCount = FrameCountProcessor.GetFrameCountFromHTMLDocument(mainHtmlDocument); for (var i = 0; i != framesCount; ++i) { var frame = FrameByIndexProcessor.GetFrameFromHTMLDocument(i, mainHtmlDocument); if (frame == null) { continue; } IHTMLDocument2 document; try { WaitWhileIEBusy(frame); WaitWhileIEReadyStateNotComplete(frame); WaitWhileFrameDocumentNotAvailable(frame); document = (IHTMLDocument2)frame.Document; } finally { // free frame Marshal.ReleaseComObject(frame); } WaitWhileDocumentStateNotComplete(document); WaitForFramesToComplete(document); } }
internal static int GetFrameCountFromHTMLDocument(HTMLDocument htmlDocument) { var processor = new FrameCountProcessor(htmlDocument); IEUtils.EnumIWebBrowser2Interfaces(processor); return processor.FramesCount; }
internal static int GetFrameCountFromHTMLDocument(HTMLDocument htmlDocument) { var processor = new FrameCountProcessor(htmlDocument); IEUtils.EnumIWebBrowser2Interfaces(processor); return(processor.FramesCount); }
public virtual void WaitForFramesToComplete(IHTMLDocument2 maindocument) { var mainHtmlDocument = UtilityClass.GetWithFailOver(() => (HTMLDocument)maindocument); var framesCount = FrameCountProcessor.GetFrameCountFromHTMLDocument(mainHtmlDocument); for (var i = 0; i != framesCount; ++i) { var frame = FrameByIndexProcessor.GetFrameFromHTMLDocument(i, mainHtmlDocument); if (frame == null) { continue; } IHTMLDocument2 frameDocument; try { if (!WaitWhileIEBusy(frame)) { continue; } if (!WaitWhileIEReadyStateNotComplete(frame)) { continue; } WaitWhileFrameDocumentNotAvailable(frame); frameDocument = (IHTMLDocument2)frame.Document; } finally { // free frame Marshal.ReleaseComObject(frame); } WaitWhileDocumentStateNotCompleteOrInteractive(frameDocument); WaitForFramesToComplete(frameDocument); } }