Click here to Skip to main content
13,901,285 members
Click here to Skip to main content
Add your own
alternative version

Stats

737.9K views
18.7K downloads
163 bookmarked
Posted 16 Nov 2003
Licenced

Microsoft Web Browser Automation using C#

, 16 Nov 2003
Rate this:
Please Sign up or sign in to vote.
An article on axWebBrowser/MSHTML automation using Visual C#.

Sample Image - mshtml_automation.jpg

Introduction

The Microsoft Web Browser COM control adds browsing, document, viewing, and downloading capabilities to your applications. Parsing and rendering of HTML documents in the WebBrowser control is handled by the MSHTML component which is an Active Document Dynamic HTML (DHTML) Object Model hosting ActiveX Controls and script languages. The WebBrowser control merely acts as a container for the MSHTML component and implements navigations and related functions. MSHTML can be automated using IDispatch and IConnectionPointContainer-style automation interfaces. These interfaces enable a host to automate MSHTML through the object model.

Note

If you are not using the Visual Studio .NET IDE; use Windows Forms ActiveX Control Importer (Aximp.exe) to convert type definitions in a COM type library for an ActiveX control into a Windows Forms control. For instance: to generate the interop DLL's for the ActiveX browser component using the command line run aximp ..\system32\shdocvw.dll relative to your system32 path. Compilation of a form that uses the AxSHDocVw.AxWebBrowser class would be as follows: csc /r:SHDocVw.dll,AxSHDocVw.dll YourForm.cs.

Using the code

Simple Automation scenario:

In order to automate this task, first add a Microsoft Web Browser object to an empty C# Windows application. In the Visual Studio .NET IDE, this is done by using the "Customize Toolbox..." context menu (on the Toolbox), pick "Microsoft Web Browser" from the COM components list. This will add an "Explorer" control in the "General" section of the Toolbox.

//
// navigate to google on Form load
//
private void Form1_Load(object sender, System.EventArgs e)
{
    object loc = "<A href="http://www.google.com/">http://www.google.com/</A>";
    object null_obj_str = "";
    System.Object null_obj = 0;
    this.axWebBrowser1.Navigate2(ref loc , ref null_obj, 
          ref null_obj, ref null_obj_str, ref null_obj_str);
}

Next open the solution explorer and add a reference to the Microsoft HTML Object Library (MSHTML) from the COM components list and implement the following code.

//
// Global variable Task used to prevent recursive code executions.
// 

using mshtml;

private int Task = 1; // global

private void axWebBrowser1_DocumentComplete(object sender, 
         AxSHDocVw.DWebBrowserEvents2_DocumentCompleteEvent e)

{
switch(Task)
    {
        case 1:

            HTMLDocument myDoc = new HTMLDocumentClass();
            myDoc = (HTMLDocument) axWebBrowser1.Document;

            // a quick look at the google html source reveals: 
            // <INPUT maxLength="256" size="55" name="q">
            //
            HTMLInputElement otxtSearchBox = 
               (HTMLInputElement) myDoc.all.item("q", 0);

            otxtSearchBox.value = "intel corp";

            // google html source for the I'm Feeling Lucky Button:
            // <INPUT type=submit value="I'm Feeling Lucky" name=btnI>
            //
            HTMLInputElement btnSearch = 
               (HTMLInputElement) myDoc.all.item("btnI", 0);
            btnSearch.click();

            Task++;
            break;

        case 2:

            // continuation of automated tasks...
            break;
    }
}

References

MSDN

History

  • Version 1.0 - November 16th 2003 - Original Submission
  • Version 1.1 - November 17th 2003 - Modified axWebBrowser event

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

Share

About the Author

Alexander Kent
Kentdome LLC
United States United States
Biography in progress Wink | ;-)

You may also be interested in...

Pro

Comments and Discussions

 
GeneralMdiChild Pin
da vinci coder7-Apr-06 11:07
memberda vinci coder7-Apr-06 11:07 
GeneralRe: MdiChild Pin
Bralyan18-Apr-06 10:59
memberBralyan18-Apr-06 10:59 
GeneralBars Pin
vpantaleo13-Feb-06 4:42
membervpantaleo13-Feb-06 4:42 
Questionhow 2 work with combo box using axWebBrowser1 ? Pin
vedmack3-Jan-06 22:50
membervedmack3-Jan-06 22:50 
AnswerRe: how 2 work with combo box using axWebBrowser1 ? Pin
Bralyan17-Jan-06 4:39
memberBralyan17-Jan-06 4:39 
GeneralRe: how 2 work with combo box using axWebBrowser1 ? Pin
vedmack18-Jan-06 6:28
membervedmack18-Jan-06 6:28 
GeneralUser Authentication Pin
plclogic13-Dec-05 3:18
memberplclogic13-Dec-05 3:18 
Generaldrag drop on web browser control Pin
fadi moon9-Dec-05 22:49
memberfadi moon9-Dec-05 22:49 
i want drag and drop support on wbb browser control
i am draging treenode from treeview control and droping it to web browser control
which interfaces should i implement,
plz help me regarding this problem,

regards
fadi
Question.Net 2.0 Webbrowser document.designmode = 'On' Pin
phanf8-Dec-05 4:29
memberphanf8-Dec-05 4:29 
AnswerRe: .Net 2.0 Webbrowser document.designmode = 'On' Pin
ianvink@gmail.com13-Dec-06 13:09
memberianvink@gmail.com13-Dec-06 13:09 
GeneralRe: .Net 2.0 Webbrowser document.designmode = 'On' Pin
phanf14-Dec-06 5:19
memberphanf14-Dec-06 5:19 
GeneralRe: .Net 2.0 Webbrowser document.designmode = 'On' Pin
cmumford4-Jan-07 12:24
membercmumford4-Jan-07 12:24 
QuestionHow do I process a second page? Pin
FVCostanza21-Nov-05 2:18
memberFVCostanza21-Nov-05 2:18 
QuestionRe: How do I process a second page? Pin
anonbogey8-Mar-06 5:15
memberanonbogey8-Mar-06 5:15 
GeneralThanks Pin
fearless stallion10-Nov-05 0:43
memberfearless stallion10-Nov-05 0:43 
Generalgetting HTML elements without id or name Pin
Cihan Selçuk5-Nov-05 6:04
memberCihan Selçuk5-Nov-05 6:04 
GeneralRe: getting HTML elements without id or name Pin
Selcuk OZDOGAN7-Jul-06 15:33
memberSelcuk OZDOGAN7-Jul-06 15:33 
Questioni cant using mshtml ?! Pin
hamid_m17-Sep-05 18:50
memberhamid_m17-Sep-05 18:50 
QuestionHow to capture text in pdf form field from browser Pin
jonnydac30-Aug-05 4:52
memberjonnydac30-Aug-05 4:52 
Questionsupport javascript? Pin
tinybunny_810-Aug-05 9:27
membertinybunny_810-Aug-05 9:27 
AnswerRe: support javascript? Pin
Bralyan22-Apr-06 9:43
memberBralyan22-Apr-06 9:43 
GeneralRe: support javascript? Pin
bebangs22-Jun-06 18:28
memberbebangs22-Jun-06 18:28 
GeneralRe: support javascript? Pin
rixwan11-Jun-07 22:12
memberrixwan11-Jun-07 22:12 
GeneralRe: support javascript? Pin
donchev_p2-Nov-08 20:58
memberdonchev_p2-Nov-08 20:58 
AnswerRe: support javascript? Pin
zain_ali17-Dec-10 19:40
memberzain_ali17-Dec-10 19:40 

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.

Permalink | Advertise | Privacy | Cookies | Terms of Use | Mobile
Web04 | 2.8.190306.1 | Last Updated 17 Nov 2003
Article Copyright 2003 by Alexander Kent
Everything else Copyright © CodeProject, 1999-2019
Layout: fixed | fluid