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);
}
}