1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| private struct WindowData { public System.Windows.Forms.HtmlDocument document; public IConnectionPoint icpWin; public int cookieWin; public IConnectionPoint icpDoc; public int cookieDoc; }
private WindowData setWindowComConnect(object pDisp){ WindowData data = new WindowData(); Guid guid; data.document = (HTMLDocument)((SHDocVw.IWebBrowser2)pDisp).Document; IConnectionPointContainer pConPtCon = (IConnectionPointContainer)data.document; guid = typeof(HTMLDocumentEvents2).GUID; pConPtCon.FindConnectionPoint(ref guid, out data.icpDoc); data.icpDoc.Advise(this, out data.cookieDoc); IConnectionPointContainer pCpcWin = (IConnectionPointContainer)data.document.parentWindow; guid = typeof(HTMLWindowEvents2).GUID; pCpcWin.FindConnectionPoint(ref guid, out data.icpWin); data.icpWin.Advise(this, out data.cookieWin); return data; } private void unsetWindowComConnect(WindowData data){ if (data.icpWin != null) { try { data.icpWin.Unadvise(data.cookieWin); Marshal.ReleaseComObject(data.icpWin); } catch (Exception ex) { } } if (data.icpDoc != null) { data.icpDoc.Unadvise(data.cookieDoc); Marshal.ReleaseComObject(data.icpDoc); } if (data.document != null) { Marshal.ReleaseComObject(data.document); } }
|
tilfin
freelance software engineer