Introduction
This article presents an implementation of a web browser control for the .NET Framework 1.1. It's more of a reference for what it does than how it's done.
This is not the result of my work, but a collection of all the help I got along the way.
Background
The need for this control came from a project I'm working in. It's a Smart Client Windows application that hosts applications in web browsers and interacts with the pages.
What does it do?
This control is mainly an interop to the following COM interfaces:
Interface |
Description |
Usage |
IWebBrowser2 |
This interface enables applications to implement an instance of the WebBrowser control (Microsoft ActiveX control) or control an instance of the InternetExplorer application (OLE Automation). Note that not all of the methods listed below are supported by the WebBrowser control. |
Main web browser operation. |
DWebBrowserEvents2 |
This interface designates an event sink interface that an application must implement in order to receive event notifications from a WebBrowser control or from the Microsoft Internet Explorer application. Note that not all of the events listed below are supported by the WebBrowser control. |
Handling web browser events. |
IDocHostUIHandler |
This custom interface enables an application hosting the WebBrowser control or automating Microsoft Internet Explorer to replace the menus, toolbars, and context menus used by MSHTML. |
Showing the context menu, translating keys and URLs. |
IDocHostShowUI |
A host can supply mechanisms that will show message boxes and Help by implementing the IDocHostShowUI interface. |
Showing message boxes (alert and confirm) and help. |
IOleCommandTarget |
The IOleCommandTarget interface enables objects and their containers to dispatch commands to each other. For example, an object's toolbars may contain buttons for commands such as Print, Print Preview, Save, New, and Zoom. |
Handling script errors. |
Using the code
The MSHTML primary interop assembly (installed with the .NET Framework SDK Version 1.1 - usually %ProgramFiles%\Microsoft.NET\Primary Interop Assemblies) is needed to interop with HTML stuff.
Other than that, just add the control to your form or user control.
Known Issues
When bound to a PropertyGrid
, the PropertyGrid
throws an Exception. Which means that we still don't have designer support.
Thanks To
Barry M., Igor Tandetnik, João Melo, Luís Abreu, Oleg Mihailik, and many more.
Update - July 8, 2007
A few bugs fixed and a change to the API.