This project has moved. For the latest updates, please go here.
/*
   customize class UI in Outlook
   taken from Example07.cs
*/
public partial class Form1 : Form
{
   Outlook.Application _outlookApplication;

   private delegate void UpdateEventTextDelegate(string Message);
   UpdateEventTextDelegate _updateDelegate;

   public Form1()
   {
       InitializeComponent();
       _updateDelegate = new UpdateEventTextDelegate(UpdateTextbox);
   }

   private void button1_Click(object sender, EventArgs e)
   {
       Office.CommandBar commandBar;
       Office.CommandBarButton commandBarBtn;

       // start outlook
       _outlookApplication = new Outlook.Application();

       Outlook._NameSpace outlookNS = _outlookApplication.GetNamespace("MAPI");
       Outlook.MAPIFolder inboxFolder = outlookNS.GetDefaultFolder(
OlDefaultFolders.olFolderInbox); inboxFolder.Display(); // add a commandbar popup Office.CommandBarPopup commandBarPopup = (Office.CommandBarPopup)_
outlookApplication.ActiveExplorer().CommandBars["Menu Bar"].Controls.Add(
MsoControlType.msoControlPopup); commandBarPopup.Caption = "commandBarPopup"; #region few words, how to access the picture /* you can see we use an own icon via .PasteFace() is not possible from outside process boundaries to use the PictureProperty
directly. the reason for is IPictureDisp:
http://support.microsoft.com/kb/286460/de its not important is early or late binding or managed or unmanaged, the behaviour
is always the same. For example, a COMAddin running as InProcServer and can
access the Picture Property. */
#endregion #region CommandBarButton // add a button to the popup commandBarBtn = (Office.CommandBarButton)commandBarPopup.Controls.Add(
MsoControlType.msoControlButton); commandBarBtn.Style = MsoButtonStyle.msoButtonIconAndCaption; commandBarBtn.Caption = "commandBarButton"; Clipboard.SetDataObject(this.Icon.ToBitmap()); commandBarBtn.PasteFace(); commandBarBtn.ClickEvent += new Office.CommandBarButton_ClickEventHandler(
commandBarBtn_Click); #endregion #region Create a new toolbar // add a new toolbar commandBar = _outlookApplication.ActiveExplorer().CommandBars.Add(
"MyCommandBar", MsoBarPosition.msoBarTop, false, true); commandBar.Visible = true; // add a button to the toolbar commandBarBtn = (Office.CommandBarButton)commandBar.Controls.Add(
MsoControlType.msoControlButton); commandBarBtn.Style = MsoButtonStyle.msoButtonIconAndCaption; commandBarBtn.Caption = "commandBarButton"; commandBarBtn.FaceId = 3; commandBarBtn.ClickEvent += new Office.CommandBarButton_ClickEventHandler(
commandBarBtn_Click); // add a dropdown box to the toolbar commandBarPopup = (Office.CommandBarPopup)commandBar.Controls.Add(
MsoControlType.msoControlPopup); commandBarPopup.Caption = "commandBarPopup"; // add a button to the popup, we use an own icon for the button commandBarBtn = (Office.CommandBarButton)commandBarPopup.Controls.Add(
MsoControlType.msoControlButton); commandBarBtn.Style = MsoButtonStyle.msoButtonIconAndCaption; commandBarBtn.Caption = "commandBarButton"; Clipboard.SetDataObject(this.Icon.ToBitmap()); commandBarBtn.PasteFace(); commandBarBtn.ClickEvent += new Office.CommandBarButton_ClickEventHandler(
commandBarBtn_Click); #endregion // set buttons button1.Enabled = false; button2.Enabled = true; } private void button2_Click(object sender, EventArgs e) { _outlookApplication.Quit(); _outlookApplication.Dispose(); button1.Enabled = true; button2.Enabled = false; } void commandBarBtn_Click(Office.CommandBarButton Ctrl, ref bool CancelDefault) { textBoxEvents.BeginInvoke(_updateDelegate, new object[] { "Click called." }); Ctrl.Dispose(); } private void UpdateTextbox(string Message) { textBoxEvents.AppendText(Message + "\r\n"); } }

Last edited Jun 13, 2012 at 9:50 AM by SebastianDotNet, version 10

Comments

No comments yet.