Hi
I can not reproduce the problem.
Here is my test steps.
1. Load Addin
2. Change to Inbox folder (Exchange MAPI box NOT the private local file)
3. drag one item from the Inbox to Drafts
4. The Item_Add and Item_Remove is fired.
You may have a try.
namespace NewInspectorAddin
{
using System;
using Microsoft.Office.Core;
using Extensibility;
using System.Runtime.InteropServices;
using Outlook = Microsoft.Office.Interop.Outlook;
using System.Diagnostics;
#region Read me for Add-in installation and setup information.
// When run, the Add-in wizard prepared the registry for the Add-in.
// At a later time, if the Add-in becomes unavailable for reasons such as:
// 1) You moved this project to a computer other than which is was
originally created on.
// 2) You chose 'Yes' when presented with a message asking if you wish
to remove the Add-in.
// 3) Registry corruption.
// you will need to re-register the Add-in by building the MyAddin21Setup
project
// by right clicking the project in the Solution Explorer, then choosing
install.
#endregion
/// <summary>
/// The object for implementing an Add-in.
/// </summary>
/// <seealso class='IDTExtensibility2' />
[GuidAttribute("90335B0C-26D6-452D-A657-4E19D9044F4D"),
ProgId("NewInspectorAddin.Connect")]
public class Connect : Object, Extensibility.IDTExtensibility2
{
/// <summary>
/// Implements the constructor for the Add-in object.
/// Place your initialization code within this method.
/// </summary>
public Connect()
{
}
/// <summary>
/// Implements the OnConnection method of the IDTExtensibility2
interface.
/// Receives notification that the Add-in is being loaded.
/// </summary>
/// <param term='application'>
/// Root object of the host application.
/// </param>
/// <param term='connectMode'>
/// Describes how the Add-in is being loaded.
/// </param>
/// <param term='addInInst'>
/// Object representing this Add-in.
/// </param>
/// <seealso class='IDTExtensibility2' />
public void OnConnection(object application,
Extensibility.ext_ConnectMode connectMode, object addInInst, ref
System.Array custom)
{
Debug.WriteLine("OnConnection");
olApp = application as Outlook.Application;
Ips = olApp.Inspectors as Outlook.Inspectors;
Ips.NewInspector+=new
Microsoft.Office.Interop.Outlook.InspectorsEvents_NewInspectorEventHandler(I
nspectors_NewInspector);
srcItems =
olApp.GetNamespace("MAPI").GetDefaultFolder(Outlook.OlDefaultFolders.olFolde
rInbox).Items as Outlook.Items;
desItems =
olApp.GetNamespace("MAPI").GetDefaultFolder(Outlook.OlDefaultFolders.olFolde
rDrafts).Items as Outlook.Items;
srcItems.ItemRemove +=new
Microsoft.Office.Interop.Outlook.ItemsEvents_ItemRemoveEventHandler(srcItems
_ItemRemove);
desItems.ItemAdd +=new
Microsoft.Office.Interop.Outlook.ItemsEvents_ItemAddEventHandler(desItems_It
emAdd);
}
/// <summary>
/// Implements the OnDisconnection method of the IDTExtensibility2
interface.
/// Receives notification that the Add-in is being unloaded.
/// </summary>
/// <param term='disconnectMode'>
/// Describes how the Add-in is being unloaded.
/// </param>
/// <param term='custom'>
/// Array of parameters that are host application specific.
/// </param>
/// <seealso class='IDTExtensibility2' />
public void OnDisconnection(Extensibility.ext_DisconnectMode
disconnectMode, ref System.Array custom)
{
if(srcItems !=null)
{
Marshal.ReleaseComObject(srcItems);
srcItems = null;
}
if(desItems !=null)
{
Marshal.ReleaseComObject(desItems);
desItems = null;
}
if(mi !=null)
{
Marshal.ReleaseComObject(mi);
mi = null;
}
if(Ips !=null)
{
Marshal.ReleaseComObject(Ips);
Ips = null;
}
if(olApp !=null)
{
Marshal.ReleaseComObject(olApp);
olApp = null;
}
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
}
/// <summary>
/// Implements the OnAddInsUpdate method of the IDTExtensibility2
interface.
/// Receives notification that the collection of Add-ins has changed.
/// </summary>
/// <param term='custom'>
/// Array of parameters that are host application specific.
/// </param>
/// <seealso class='IDTExtensibility2' />
public void OnAddInsUpdate(ref System.Array custom)
{
}
/// <summary>
/// Implements the OnStartupComplete method of the IDTExtensibility2
interface.
/// Receives notification that the host application has completed
loading.
/// </summary>
/// <param term='custom'>
/// Array of parameters that are host application specific.
/// </param>
/// <seealso class='IDTExtensibility2' />
public void OnStartupComplete(ref System.Array custom)
{
}
/// <summary>
/// Implements the OnBeginShutdown method of the IDTExtensibility2
interface.
/// Receives notification that the host application is being
unloaded.
/// </summary>
/// <param term='custom'>
/// Array of parameters that are host application specific.
/// </param>
/// <seealso class='IDTExtensibility2' />
public void OnBeginShutdown(ref System.Array custom)
{
}
private Outlook.Application olApp=null;
private Outlook.Inspectors Ips = null;
private Outlook.MailItem mi=null;
private Outlook.Items srcItems=null;
private Outlook.Items desItems=null;
private void
Inspectors_NewInspector(Microsoft.Office.Interop.Outlook.Inspector
Inspector)
{
mi = Inspector.CurrentItem as Outlook.MailItem;
if(mi ==null)
Debug.WriteLine("MailItem is null");
else
{
Debug.WriteLine(mi.To);
}
}
private void srcItems_ItemRemove()
{
Debug.WriteLine("srcItems_ItemRemove");
}
private void desItems_ItemAdd(object Item)
{
Debug.WriteLine("desItems_ItemAdd");
}
}
}
Best regards,
Peter Huang
Microsoft Online Partner Support
Get Secure! -
www.microsoft.com/security
This posting is provided "AS IS" with no warranties, and confers no rights.