How to create Internet Explorer browser helper object,
IE BHO, context menu on IE SDK: C#, VB.NET, C++

Add-in Express™
for Internet Explorer® and Microsoft® .net

Add-in Express makes the Internet Explorer extensibility integrated

Add-in Express is based on the IE SDK and allows you to:

  • Add custom commands to the built-in Internet Explorer menu bar and toolbar.
  • Add your own items to any built-in IE context menus.
  • Create a custom toolbar / commandbar and populate it with any .NET controls.
  • Create custom Explorer bars (like the Favorites or History bars).
  • Add new keyboard shortcuts.
  • Develop IE browser helper objects (IE BHO).
  • Access Internet Explorer objects and their events.

In contrast to the IE SDK, which offers disembodied solutions based on ActiveX objects or scripts for each of the above items, Add-in Express integrates all stuff in one project with a lucid, easy-to-understand architecture and an interaction model with Internet Explorer.

The IE Module - browser helper objects based on Add-in Express

Each of your Internet Explorer add-on solutions based on Add-in Express includes two projects: the add-on project itself and its setup project.

IE add-on solution generated by Add-in Express

All your Internet Explorer add-ons based on Add-in Express are implemented as browser helper objects. However, unlike the IE SDK, your Add-in Express based BHO is more stable since the Add-in Express run-time code is already thread-safe and context sensitive. You needn’t do anything to make your add-ins such. In addition, Add-in Express solves a lot of problems that you may face with the IE SDK, such as threading, context synchronization, data globalization, the Windows Registry and Windows Explorer:

  • Threading - Add-in Express isolates your add-ons with a special loader.
  • Context synchronization - Add-in Express provides access to IE objects that are actual in the current context.
  • Data globalization - Add-in Express allows you to utilize data that is global for the whole browser process.
  • Windows Registry - Add-in Express registers all your extensibility features itself; you can forget about the Windows Registry.
  • Windows Explorer - Yes, Add-in Express resolves the Windows Explorer problem for Internet Explorer add-ons. The fact is that Windows Explorer runs all BHOs registered for Internet Explorer. Add-in Express disables loading of your IE add-ons for Windows Explorer, so your add-ons truly work for Internet Explorer only, but not for Windows Explorer.

Finally, with Add-in Express your IE add-on is a .NET component, the IE Module in Add-in Express terms. The IE Module is the "heart" of your project; it implements a threading-safe BHO, centralizes global data and your applied code, integrates all extensibility features and can serve as a container for other components, e.g. your data-aware or service-related components. The IE Module has a special visual designer and several IE-specific properties and events (see the pictures below).

Properties available for an IE add-on Events available for an IE add-on

The main IE Module properties are:

  • Commands - a collection of commands you add to Internet Explorer.
  • ContextMenu - a collection of pop-up menu items for all IE context.
  • Bars - a collection each item of which makes an appropriated .NET user control a custom Explorer bar.
  • Toolbars - it is a collection each item of which makes an appropriated .NET user control a custom toolbar.

The IE Module provides you with the following Internet Explorer events:

IE Application

IE Module

HHTP Negotiations

  • BeforeNavigate2
  • CommandStateChange
  • DocumentComplete
  • DocumentComplete2
  • DownloadBegin
  • DownloadComplete
  • FileDownload
  • NavigateComplete2
  • NavigateError
  • NewWindow3
  • OnMenuBar
  • OnQuit
  • ProgressChange
  • PropertyChange
  • And more…
  • OnBrowserResized
  • OnConnect
  • OnCreateContextMenu
  • OnDisconnect
  • OnError
  • OnSendMessage
  • OnTabActivated
  • OnTabChanged
  • OnTabChanging
  • OnTabClosed
  • OnTabCreated
  • OnTabDockChanged
  • OnThemeChanged
  • OnAfterResponse
  • OnAuthenticate
  • OnBeforeReguest
  • OnGetRootSecurityId
  • OnGetSerializedClientCertContext
  • OnRequest
  • OnResponse

Access Internet Explorer and HTML objects and events

Your IE Module contains all Internet Explorer application-level events, they are available via the Properties window. As for Internet Explorer objects, your IE Module provides you with two properties, which are entry points to the corresponding object models: IEApp (IE.WebBrowser) that returns a reference to the WebBrowser object of Internet Explorer and HTMLDocument providing access to the MSHTML.HTMLDocument object representing an HTML document hosted by the WebBrowser control. To handle document-level events you can use a special event-helper component, ADXIEHtmlDocEvents:

Component for handling HTML Document events IE HTML Document document events