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:
Expand|Select|Wrap|Line Numbers
- 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;
- }
Expand|Select|Wrap|Line Numbers
- 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?
- }
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.