We recommend using Visual Studio 2017
This documentation is archived and is not being maintained.

How to: Add Custom Menus and Menu Items to Outlook

Updated: May 2011

This example creates a menu in Microsoft Office Outlook. The menu, which contains one item, appears at the top of the application. When you click the menu item, the code displays a message that shows the menu item caption.

Applies to: The information in this topic applies to application-level projects for Outlook 2007. For more information, see Features Available by Office Application and Project Type.

link to video For a related video demonstration, see How Do I: Customize Outlook Item Context Menus?.

private Office.CommandBar menuBar;
private Office.CommandBarPopup newMenuBar;
private Office.CommandBarButton buttonOne;

private void ThisAddIn_Startup(object sender, System.EventArgs e)

private void AddMenuBar()
        menuBar = this.Application.ActiveExplorer().CommandBars.ActiveMenuBar;
        newMenuBar = (Office.CommandBarPopup)menuBar.Controls.Add(
            Office.MsoControlType.msoControlPopup, missing,
            missing, missing, true);
        if (newMenuBar != null)
            newMenuBar.Caption = "New Menu";
            buttonOne = (Office.CommandBarButton)newMenuBar.Controls.
            Add(Office.MsoControlType.msoControlButton, missing,
                missing, 1, true);
            buttonOne.Style = Office.MsoButtonStyle.
            buttonOne.Caption = "Button One";
            buttonOne.FaceId = 65;
            buttonOne.Tag = "c123";
            buttonOne.Click += new
            newMenuBar.Visible = true;
    catch (Exception ex)

private void buttonOne_Click(Office.CommandBarButton ctrl,
    ref bool cancel)
    System.Windows.Forms.MessageBox.Show("You clicked: " + ctrl.Caption,
        "Custom Menu", System.Windows.Forms.MessageBoxButtons.OK);

Declare your command bar variables at the class level. If you declare them inside a method, they will go out of scope as soon as the method finishes running and the garbage collector will be able to reallocate the memory.




May 2011

Simplified the code example.

Customer feedback.