.NET 1.1 で COM ポイントに接続

    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();
    
      // UCOM Connect
      Guid guid;

      data.document = (HTMLDocument)((SHDocVw.IWebBrowser2)pDisp).Document;

      // Document
      IConnectionPointContainer pConPtCon = (IConnectionPointContainer)data.document;
      guid = typeof(HTMLDocumentEvents2).GUID;
      pConPtCon.FindConnectionPoint(ref guid, out data.icpDoc);
      data.icpDoc.Advise(this, out data.cookieDoc);

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