using System;
using System.Threading;
using SHDocVw;

namespace IE_Puppeteer
{
   class Puppeteer
   {
      private InternetExplorer m_ie = null;
      private AutoResetEvent m_quitEvent = new AutoResetEvent(false);

      public void OnQuit()
      {
         m_quitEvent.Set();
      }

      public void OnNavigateComplete(Object o, ref Object url)
      {        
         Console.WriteLine("URL: {0}", m_ie.LocationURL);
      }

      Puppeteer()
      {
      }

      void Run()
      {
         m_ie = new InternetExplorer();
         Console.WriteLine("Visible: {0}", m_ie.Visible);
         m_ie.Visible = true;

         DWebBrowserEvents2_NavigateComplete2EventHandler ncd;
         ncd = new DWebBrowserEvents2_NavigateComplete2EventHandler(
         			OnNavigateComplete);
         m_ie.NavigateComplete2 += ncd;

         DWebBrowserEvents2_OnQuitEventHandler qd;
         qd = new DWebBrowserEvents2_OnQuitEventHandler(OnQuit);
         m_ie.OnQuit += qd;

         Object o = null;    
         m_ie.Navigate("http://www.google.com", 
         				ref o, ref o, ref o, ref o);   

         m_quitEvent.WaitOne();      
      }

      [STAThread]
      static void Main(string[] args)
      {
         new Puppeteer().Run();
      }
   }
}
