ok, this is tricky. you have to write a plugin, to accomplish this for a browser or you have to grab (attach to) the ie process. from within your application, you can host your own ie instance using the provided browser object which would be much easier.
now, dealing with a certain instance of the browser/ie is quite a frustrating experience, because you have to use a bunch of old fashioned interfaces (C/C++) with poor documentation. the rest is mostly about casting or better finding the appropriate classes/interfaces. the following code is not tested, but hints the right direction.
using System.Runtime.InteropServices;
using System.Web;
using Microsoft.Win32;
using mshtml;
using SHDocVw;
[...].object o = null;
InternetExplorer ieInstance = new InternetExplorerClass();
IWebBrowserApp wb = (IWebBrowserApp)ieInstance;
wb.Navigate("http://www.google.de", ref o, ref o, ref o, ref o);
wb.Visible = true;
while (wb.Busy) ;
HTMLDocument wd = (HTMLDocument)wb.Document;
IHTMLDocument2 doc = (IHTMLDocument2)ieInstance.Document;
string sHTML = doc.body.innerHTML;
HTMLDocument htmlDoc = (HTMLDocument)(ieInstance as SHDocVw.WebBrowserClass).Explorer.IWebBrowser_Document;
htmlDoc.ParentWindow.execScript("alert('hello world !!')", "javascript");
(ieInstance as SHDocVw.InternetExplorer).ReadyState == SHDocVw.tagREADYSTATE.READYSTATE_COMPLETE
(ieInstance as SHDocVw.WebBrowser_V1).BeforeNavigate += new DWebBrowserEvents_BeforeNavigateEventHandler(this.OnBeforeNavigate);
(ieInstance as SHDocVw.WebBrowser_V1).NavigateComplete += new DWebBrowserEvents_NavigateCompleteEventHandler(BHOIEContextMenu_NavigateComplete);