Program Outlook add-in / plugin
in Visual Studio .NET - VB.NET, C#, C++
Add-in Express™
for Microsoft® Office and .net
Add-in Express .NET and Outlook add-ins
To considerably facilitate programming of Outlook COM add-ins / plug-ins in Visual Studio, Add-in Express for .NET provides several specific features that are a "hard nut" to implement using Outlook objects. These features are: special Outlook Explorer command bars, special Outlook Inspector command bars, option pages and Folder property pages, context sensitivity for command bars and option / property pages. Add-in Express also offers its own powerful technology of Advanced Outlook Regions that you can use for customizing Outlook forms and folder views.
With Add-in Express you can write a COM add-in for Microsoft Outlook 2000, 2002 (XP), 2003 and Outlook 2007 in C++, C#, Visual Basic (VB .NET) and RO Chrome. You may also find useful a free sample Outlook add-in in VB.NET, C# and other .NET languages available with the source code.
See also the most recent documentation about how to build Outlook add-in in the Add-in Express Developer Guide: Writing Outlook add-in / plugin in C#, VB.NET, C++.
1. Create a new Outlook COM add-in project
In the Visual Studio IDE, select the "New | Project" item on the main menu, and run the "Add-in Express COM Add-in" wizard via the "Other Projects | Extensibility Projects" item of the "New Project" dialog box. Enter your project name, click Next, choose a programming language, select Outlook as a host application for your add-in and click Finish. The wizard generates a new add-in solution and opens it in Visual Studio. The Outlook COM add-in solution includes the add-in project and a setup project (optional).

Benefits:
- You can use any programming language to create an add-in for any Outlook versions from all Office suits (editions).
- You can use Outlook 2000 PIAs (Primary Interop Assemblies) without installing Outlook 2000 on your PC.
- The COM Add-in Project wizard creates both COM Add-in project and the Setup project automatically.
2. Add-in module in Outlook add-in projects
AddinModule.vb (AddinModule.cs) is the heart of your add-in. You place components onto the Add-in Module designer instead of programming the user interface of your Outlook add-in. You also write the code of your add-in to the Add-in module.

Benefits:
- All Outlook versions and editions are supported
- Outlook-targeted properties
- Your interface-related code is concentrated in one place
- Rapid Application Development approach is applied to Outlook COM add-ins for the first time
- Several add-ins in one assembly – just add another Add-in Module to your Outlook Add-in project
- You create the user interface of your Outlook addin at design-time
Essential technical information:
| Add-in name, description, and load behavior | |
| Supported Office applications - you choose Outlook | |
| Collection of custom task panes (Office 2007) | |
| Host application name, type, version, and object | |
| When the add-in completes start-up routines or is required to shut down | |
| Before and after a custom task pane is created or shown, before a task pane is destroyed | |
| Before the ribbon XML markup is created and loaded, after ribbon XML markup is loaded |
3. Customizing Outlook Ribbon user interface
Add appropriate Ribbon-related components to the Add-in module and use their editors to customize your add-in's interface in Outlook 2007.

Benefits:
- You create Office 2007 XML markup with components.
- Simple properties add your custom Ribbon tabs or Ribbon Office menu items to any context of the Ribbon-enabled Outlook 2007 Inspector window.
Essential technical information:
| Ribbon tab caption and position | |
| Supported ribbons and context (say, Pivot Table in Excel or table in Word) | |
| Visible (Boolean) |
4. Creating Outlook custom task panes
Add a UserControl to your project, add an item to the TaskPanes collection, and set up the item by choosing the UserControl in the ControlProgId property and filling in the Title property. More about custom task panes.

Benefits:
- You use familiar technologies for programming Outlook 2007 custom task panes.
Essential technical information:
| Task pane title, width and height | |
| The UserControl bound to the task pane | |
| Dock position and dock position restrictions | |
| Outlook as a supported Ribbon-enabled applications | |
| Visible (Boolean) | |
| When the user changes the dock position or the visible state of the task pane | |
| Before and after a custom task pane is created or shown, before a task pane is destroyed |
5. Traditional Outlook command bars and commandbar controls
Add one or more special Outlook Explorer CommandBar and Outlook Inspector CommandBar component to the Add-in Module and populate its Controls collection using a handy editor. Bind the component to a built-in Outlook command bar specifying the command bar name in the component's CommandBarName property. Create a custom command bar specifying a unique name in the CommandBarName property. Use the Folder Name, FolderNames, and ItemTypes properties to add context-sensitivity to your toolbars. See also Add-in Express command bar components.

Benefits:
- Simple Outlook-oriented components to create or connect to custom and built-in toolbars, menus, and context menus.
- Context-sensitive command bars - you specify one ore more folders and/or a folder's default item types for the command bar to show up.
- Add custom .NET controls to Outlook toolbars with Toolbar Controls for Microsoft Office.
Essential technical information:
| Command bar name, description, position, and protection | |
| Folder name(s) and/or a folder's default item types which the command bar is shown for | |
| Boolean properties: Temporary, Enabled, and Usable for Ribbon-enabled applications | |
| Collection of command bar controls: buttons, combo boxes, dropdown lists, edits, popups. | |
| Click - for command bar button | |
| Change – for command bar combo box, dropdown list, and edit | |
| All events for custom .NET controls |
6. Outlook options pages and folder property pages
Add a special Outlook Property Page component to your project, bind the component to the Add-in module, and specify the Title of the Options page. Use the same technique to create context-sensitive property pages for the Folder Properties dialog.

Benefits:
- A simple UserControl-based component to customize Outlook Options dialog and Folder Properties dialog.
- Context-sensitive Folder Property pages.
- Use Dirty and Apply events to handle user input to the pages.
Essentials:
![]()
Folder name(s) and/or a folder's default item types which the folder property page is shown for
![]()
All UserControl properties
![]()
When the user changes the option page, when the user clicks the Apply button
![]()
All UserControl events
7. Advanced Outlook customization
Use Advanced Outlook Form Regions provided by the Add-in Express Extensions for Microsoft Outlook to customize the Outlook user interface and program commercial-class Outlook add-ins.
8. Intercepting keyboard shortcuts in Outlook add-ins
Add a Keyboard Shortcut component to the Add-in module and specify the shortcut you need to intercept.

Then you handle the Action event of the component.
Private Sub MyActionProc(ByVal sender As System.Object) _
Handles AdxKeyboardShortcut1.Action
MsgBox(AdxKeyboardShortcut1.ShortcutText + " has been pressed!")
End Sub
Benefits:
- The component just saves your time.
Essential technical information:
| Enabled (Boolean) | |
| Shortcut Text | |
| Supported Office Applications | |
| When the keyboard shortcut is pressed by the user |
9. Deploying Outlook add-in
Add-in Express add-ins are based on the Add-in Express Loader which is a feature-rich shim and bootstrap application.

With automatically generated setup project, the Add-in Express Loader provides you with the following benefits:
- Manifest-configured features: setup log, non-admin installation, updating an add-in while it is loaded
- Ready-to-use custom actions for your setup project: just build the setup project
- Per-user and per-computer add-in installations
- You can sign the Add-in Express Loader with a digital certificate thus making your add-ins trusted
More about Deploying add-ins with shims and Add-in Express Loader.

