Internet Explorer Activity Monitor






3.64/5 (8 votes)
The Internet Activity Monitor captures what you are doing on Internet Explorer like opening a browser, requesting a Website and closing the browser.
Introduction
This application is a simple but useful one. I used this application in a Windows Service which monitors the activity of the browser and the person logged-in at that time.
Adding Reference

Add a reference in your project to SHDocVw.dll. This is a COM component named Microsoft Internet Controls. It contains the definitions of the InternetExplorer
and ShellWindows
classes.
About the Code
The code can be divided into three parts:
- Browser Open Activity
- Browser Navigation Activity
- Browser Close Activity
Following are the event handlers that are fired at their respective events:
// THIS EVENT IS FIRED WHEN A NEW BROWSER IS OPENED
private void shellWindows_WindowRegistered(int z)
{
string filnam;
foreach (SHDocVw.InternetExplorer ie in shellWindows)
{
filnam = Path.GetFileNameWithoutExtension(ie.FullName).ToLower();
if (filnam.Equals("iexplore"))
{
browser = ie;
bool check=true;
for (int i=0; i<Current_IE_Handles.Count; i++)
{
if (Current_IE_Handles[i].ToString()==browser.HWND.ToString())
{
check=false;
}
}
if (check==true)
{
Current_IE_Handles.Add(browser.HWND.ToString());
this.listBox1.Items.Add("Browser Open : Handle
( "+browser.HWND.ToString()+" )");
browser.BeforeNavigate2+=
new SHDocVw.DWebBrowserEvents2_BeforeNavigate2EventHandler
(browser_BeforeNavigate2);
}
}
}
}
When you type something like www.codeproject.com, this event is fired and here you can capture all the information about the Internet Explorer Navigation.
// THIS EVENT IS FIRED WHEN THE BROWSER IS JUST ABOUT TO NAVIGATE TO A WEBSITE
private void browser_BeforeNavigate2(object a,ref object b,
ref object c,ref object d,ref object e,ref object f,ref bool g)
{
this.listBox1.Items.Add(browser.HWND.ToString()+ " : "+b.ToString());
}
// THIS EVENT IS FIRED WHEN A NEW BROWSER IS CLOSED
private void shellWindows_WindowRevoked(int z)
{
string filnam;
ArrayList Closed_IE=new ArrayList();
foreach (SHDocVw.InternetExplorer ie in shellWindows)
{
filnam = Path.GetFileNameWithoutExtension(ie.FullName).ToLower();
if (filnam.Equals("iexplore"))
{
Closed_IE.Add(ie.HWND.ToString());
}
}
for (int i=0; i<this.Current_IE_Handles.Count; i++)
{
bool check=false;
for (int j=0; j<Closed_IE.Count; j++)
{
if (Convert.ToInt32(this.Current_IE_Handles[i])==
Convert.ToInt32(Closed_IE[j]))
check=true;
}
if (check==false)
{
this.listBox1.Items.Add("Browser Closed : Handle
( "+this.Current_IE_Handles[i].ToString()+" )");
this.Current_IE_Handles.RemoveAt(i);
break;
}
}
}
Currently this application captures the activity of the Internet Explorer. A new and improved version will be posted shortly that can monitor the activity of user defined browsers.
Initial Work
I carried forward the work done by Steven M. Cohn. Check out his post at this link.History
- 29th October, 2005: Initial post