trogster 0 Newbie Poster

Hello, I am working on a BHO for ie and I'm having some problems.
I have two questions.

1) How can I identify the first request for each website visited on IE (because OnBeforeNavigate2 and other events gets triggered more than once per website).

2) I want to get the website metatags in but how can I know when the DOM is ready and it's not the about:blank or a previous website DOM? (I don't want to wait for images and all that, only the html source).

Here's a little explanation of my code.
In the BHO I use:

public int SetSite(object site)
        {
            if (site != null)
            {
                webBrowser = (WebBrowser)site;
                webBrowser.BeforeNavigate2+=new DWebBrowserEvents2_BeforeNavigate2EventHandler(this.OnBeforeNavigate2);
            }
            else
            {
                webBrowser.BeforeNavigate2 -= new DWebBrowserEvents2_BeforeNavigate2EventHandler(this.OnBeforeNavigate2);
                webBrowser = null;
            }
            return 0;
        }

And in that event:

public void OnBeforeNavigate2(object pDisp, ref object URL, ref object Flags, ref object TargetFrameName, ref object PostData, ref object Headers, ref bool Cancel)
        {
                document = (HTMLDocument)webBrowser.Document;
                string URI;
                if (URL.ToString().ToLower() == "about:blank")
                {
                    URI = document.url;
                }
                else
                {
                    URI = URL.ToString();
                }
                //How can I find if this is the first request to the main URL?
        }

An example of what I am trying to achieve would be:

I open IE, I type google.com, OnBeforeNavigate2 gets triggered for the first time and I get the main url in URI and I do whatever I want with it. Now I want to ignore all the OnBeforeNavigate2 until a new website is visited, could be by typing the url, clicking a link, etc.

I hope someone can help me out with this.

Regards.