Click here to Skip to main content
15,881,715 members
Articles / Programming Languages / C#
Article

Internet Explorer Activity Monitor

Rate me:
Please Sign up or sign in to vote.
3.64/5 (8 votes)
29 Oct 2005CPOL 132.4K   2.7K   49   31
The Internet Activity Monitor captures what you are doing on Internet Explorer like opening a browser, requesting a Website and closing the browser.
Sample image

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

Sample Image - IE_Activity_Monitor.jpg

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:

  1. Browser Open Activity
  2. Browser Navigation Activity
  3. Browser Close Activity

Following are the event handlers that are fired at their respective events:

C#
// 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.

C#
// 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());
        }
C#
// 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

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer
Pakistan Pakistan
Ali Raza Shaikh did his BS (CS) from FAST-NUCES, Karachi Campus. He is also a Microsoft Certified Application Developer. He have a great passion for programming and all the programming related stuff. He can be reached at alirazashaikh.blogspot.com

Comments and Discussions

 
GeneralRe: can you make it better Pin
Jack987622-Feb-10 2:52
Jack987622-Feb-10 2:52 
GeneralBUG whan open more windows Pin
EmailSolidale22-Nov-05 22:54
EmailSolidale22-Nov-05 22:54 
GeneralRe: BUG whan open more windows Pin
Ali Raza Shaikh28-Jan-06 22:30
Ali Raza Shaikh28-Jan-06 22:30 
GeneralRe: BUG whan open more windows Pin
Tadas Danielius11-Nov-06 2:59
Tadas Danielius11-Nov-06 2:59 
GeneralRe: BUG whan open more windows Pin
scippyone6-May-07 5:22
scippyone6-May-07 5:22 
QuestionMonitor explorer Pin
nagarsoft6-Nov-05 23:26
nagarsoft6-Nov-05 23:26 
QuestionAccessing Internet Explorer history Pin
nagarsoft1-Nov-05 9:57
nagarsoft1-Nov-05 9:57 
GeneralGUI Bug Pin
nadav7430-Oct-05 21:19
nadav7430-Oct-05 21:19 
Hello Ali,

You have a GUI bug. You are updating the GUI without first checking that your thread is indeed the GUI thread. This may cause an inconsistent behaviour in general, which you may only notice when running under stress, and an "Cross-thread operation not valid: Control 'listBox1' accessed from a thread other than the thread it was created on." exception under the debugger (I used VS 2005 Beta 2).

You can find extra information here[^], or on many other places too.

I will try to post a fixed version soon if you can't figure this out on your own.

Otherwise I really think this is a cool utility with great prospects. It reminds me of this[^] product, which is, as cool as it is, not free.

Nadav
GeneralRe: GUI Bug Pin
nadav7431-Oct-05 1:43
nadav7431-Oct-05 1:43 
GeneralRe: GUI Bug Pin
Fresh Mexican Food Fan15-Mar-07 11:11
Fresh Mexican Food Fan15-Mar-07 11:11 
GeneralRe: GUI Bug Pin
nadav7415-Mar-07 11:43
nadav7415-Mar-07 11:43 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.