using System; using System.Collections.Generic; using System.Text; using Extensibility; using System.Runtime.InteropServices; using Outlook=Microsoft.Office.Interop.Outlook; namespace AyaNovaOL { #region WrapperClass /// /// Delegate signature to inform the application about closed objects. /// /// The unique ID of the closed object. public delegate void WrapperClosedDelegate(Guid id); /// /// The Wrapperclass itself has a unique ID and a closed event. /// internal abstract class WrapperClass { /// /// The event ocures when the monitored item has been closed. /// public event WrapperClosedDelegate Closed; /// /// The unique ID of the wrapped object. /// public Guid Id { get; private set; } protected void OnClosed() { if (Closed != null) Closed(Id); } /// /// The constructor creates a new unique ID. /// public WrapperClass() { Id = Guid.NewGuid(); } } // ---------- end of WrapperClass.cs ----------------------------- #endregion #region ExplorerWrapper // ----------- ExplorerWrapper.cs ------------------------------- internal class ExplorerWrapper : WrapperClass { public Outlook.Explorer Explorer { get; private set; } public ExplorerWrapper(Outlook.Explorer explorer) : base() { Explorer = explorer; ConnectEvents(); } void ConnectEvents() { ((Outlook.ExplorerEvents_10_Event)Explorer).Activate += new Microsoft.Office.Interop.Outlook.ExplorerEvents_10_ActivateEventHandler(ExplorerWrapper_Activate); ((Outlook.ExplorerEvents_10_Event)Explorer).BeforeFolderSwitch += new Microsoft.Office.Interop.Outlook.ExplorerEvents_10_BeforeFolderSwitchEventHandler(ExplorerWrapper_BeforeFolderSwitch); ((Outlook.ExplorerEvents_10_Event)Explorer).BeforeItemCopy += new Microsoft.Office.Interop.Outlook.ExplorerEvents_10_BeforeItemCopyEventHandler(ExplorerWrapper_BeforeItemCopy); ((Outlook.ExplorerEvents_10_Event)Explorer).BeforeItemCut += new Microsoft.Office.Interop.Outlook.ExplorerEvents_10_BeforeItemCutEventHandler(ExplorerWrapper_BeforeItemCut); ((Outlook.ExplorerEvents_10_Event)Explorer).BeforeItemPaste += new Microsoft.Office.Interop.Outlook.ExplorerEvents_10_BeforeItemPasteEventHandler(ExplorerWrapper_BeforeItemPaste); ((Outlook.ExplorerEvents_10_Event)Explorer).BeforeMaximize += new Microsoft.Office.Interop.Outlook.ExplorerEvents_10_BeforeMaximizeEventHandler(ExplorerWrapper_BeforeMaximize); ((Outlook.ExplorerEvents_10_Event)Explorer).BeforeMinimize += new Microsoft.Office.Interop.Outlook.ExplorerEvents_10_BeforeMinimizeEventHandler(ExplorerWrapper_BeforeMinimize); ((Outlook.ExplorerEvents_10_Event)Explorer).BeforeMove += new Microsoft.Office.Interop.Outlook.ExplorerEvents_10_BeforeMoveEventHandler(ExplorerWrapper_BeforeMove); ((Outlook.ExplorerEvents_10_Event)Explorer).BeforeSize += new Microsoft.Office.Interop.Outlook.ExplorerEvents_10_BeforeSizeEventHandler(ExplorerWrapper_BeforeSize); ((Outlook.ExplorerEvents_10_Event)Explorer).BeforeViewSwitch += new Microsoft.Office.Interop.Outlook.ExplorerEvents_10_BeforeViewSwitchEventHandler(ExplorerWrapper_BeforeViewSwitch); ((Outlook.ExplorerEvents_10_Event)Explorer).Close += new Microsoft.Office.Interop.Outlook.ExplorerEvents_10_CloseEventHandler(ExplorerWrapper_Close); ((Outlook.ExplorerEvents_10_Event)Explorer).Deactivate += new Microsoft.Office.Interop.Outlook.ExplorerEvents_10_DeactivateEventHandler(ExplorerWrapper_Deactivate); ((Outlook.ExplorerEvents_10_Event)Explorer).FolderSwitch += new Microsoft.Office.Interop.Outlook.ExplorerEvents_10_FolderSwitchEventHandler(ExplorerWrapper_FolderSwitch); ((Outlook.ExplorerEvents_10_Event)Explorer).SelectionChange += new Microsoft.Office.Interop.Outlook.ExplorerEvents_10_SelectionChangeEventHandler(ExplorerWrapper_SelectionChange); ((Outlook.ExplorerEvents_10_Event)Explorer).ViewSwitch += new Microsoft.Office.Interop.Outlook.ExplorerEvents_10_ViewSwitchEventHandler(ExplorerWrapper_ViewSwitch); } void DisconnectEvents() { ((Outlook.ExplorerEvents_10_Event)Explorer).Activate -= new Microsoft.Office.Interop.Outlook.ExplorerEvents_10_ActivateEventHandler(ExplorerWrapper_Activate); ((Outlook.ExplorerEvents_10_Event)Explorer).BeforeFolderSwitch -= new Microsoft.Office.Interop.Outlook.ExplorerEvents_10_BeforeFolderSwitchEventHandler(ExplorerWrapper_BeforeFolderSwitch); ((Outlook.ExplorerEvents_10_Event)Explorer).BeforeItemCopy -= new Microsoft.Office.Interop.Outlook.ExplorerEvents_10_BeforeItemCopyEventHandler(ExplorerWrapper_BeforeItemCopy); ((Outlook.ExplorerEvents_10_Event)Explorer).BeforeItemCut -= new Microsoft.Office.Interop.Outlook.ExplorerEvents_10_BeforeItemCutEventHandler(ExplorerWrapper_BeforeItemCut); ((Outlook.ExplorerEvents_10_Event)Explorer).BeforeItemPaste -= new Microsoft.Office.Interop.Outlook.ExplorerEvents_10_BeforeItemPasteEventHandler(ExplorerWrapper_BeforeItemPaste); ((Outlook.ExplorerEvents_10_Event)Explorer).BeforeMaximize -= new Microsoft.Office.Interop.Outlook.ExplorerEvents_10_BeforeMaximizeEventHandler(ExplorerWrapper_BeforeMaximize); ((Outlook.ExplorerEvents_10_Event)Explorer).BeforeMinimize -= new Microsoft.Office.Interop.Outlook.ExplorerEvents_10_BeforeMinimizeEventHandler(ExplorerWrapper_BeforeMinimize); ((Outlook.ExplorerEvents_10_Event)Explorer).BeforeMove -= new Microsoft.Office.Interop.Outlook.ExplorerEvents_10_BeforeMoveEventHandler(ExplorerWrapper_BeforeMove); ((Outlook.ExplorerEvents_10_Event)Explorer).BeforeSize -= new Microsoft.Office.Interop.Outlook.ExplorerEvents_10_BeforeSizeEventHandler(ExplorerWrapper_BeforeSize); ((Outlook.ExplorerEvents_10_Event)Explorer).BeforeViewSwitch -= new Microsoft.Office.Interop.Outlook.ExplorerEvents_10_BeforeViewSwitchEventHandler(ExplorerWrapper_BeforeViewSwitch); ((Outlook.ExplorerEvents_10_Event)Explorer).Close -= new Microsoft.Office.Interop.Outlook.ExplorerEvents_10_CloseEventHandler(ExplorerWrapper_Close); ((Outlook.ExplorerEvents_10_Event)Explorer).Deactivate -= new Microsoft.Office.Interop.Outlook.ExplorerEvents_10_DeactivateEventHandler(ExplorerWrapper_Deactivate); ((Outlook.ExplorerEvents_10_Event)Explorer).FolderSwitch -= new Microsoft.Office.Interop.Outlook.ExplorerEvents_10_FolderSwitchEventHandler(ExplorerWrapper_FolderSwitch); ((Outlook.ExplorerEvents_10_Event)Explorer).SelectionChange -= new Microsoft.Office.Interop.Outlook.ExplorerEvents_10_SelectionChangeEventHandler(ExplorerWrapper_SelectionChange); ((Outlook.ExplorerEvents_10_Event)Explorer).ViewSwitch -= new Microsoft.Office.Interop.Outlook.ExplorerEvents_10_ViewSwitchEventHandler(ExplorerWrapper_ViewSwitch); } void ExplorerWrapper_Close() { DisconnectEvents(); Explorer = null; GC.Collect(); GC.WaitForPendingFinalizers(); OnClosed(); } #region Views / Folder / Selection void ExplorerWrapper_ViewSwitch() { } void ExplorerWrapper_BeforeViewSwitch(object NewView, ref bool Cancel) { } void ExplorerWrapper_SelectionChange() { } void ExplorerWrapper_FolderSwitch() { } void ExplorerWrapper_BeforeFolderSwitch(object NewFolder, ref bool Cancel) { } #endregion #region Activate / Deactivate void ExplorerWrapper_Activate() { } void ExplorerWrapper_Deactivate() { } #endregion #region Resize / Move void ExplorerWrapper_BeforeSize(ref bool Cancel) { } void ExplorerWrapper_BeforeMove(ref bool Cancel) { } void ExplorerWrapper_BeforeMinimize(ref bool Cancel) { } void ExplorerWrapper_BeforeMaximize(ref bool Cancel) { } #endregion #region Cut / Copy / Paste void ExplorerWrapper_BeforeItemPaste(ref object ClipboardContent, Microsoft.Office.Interop.Outlook.MAPIFolder Target, ref bool Cancel) { } void ExplorerWrapper_BeforeItemCut(ref bool Cancel) { } void ExplorerWrapper_BeforeItemCopy(ref bool Cancel) { } #endregion } // ----------- end of ExplorerWrapper.cs ----------------------- #endregion ExplorerWrapper #region InspectorWrapper // ----------- InspectorWrapper.cs ----------------------------- internal class InspectorWrapper : WrapperClass { public Outlook.Inspector Inspector { get; private set; } public InspectorWrapper(Outlook.Inspector inspector) { Inspector = inspector; ConnectEvents(); } void ConnectEvents() { ((Outlook.InspectorEvents_10_Event)Inspector).Activate += new Microsoft.Office.Interop.Outlook.InspectorEvents_10_ActivateEventHandler(InspectorWrapper_Activate); ((Outlook.InspectorEvents_10_Event)Inspector).BeforeMaximize += new Microsoft.Office.Interop.Outlook.InspectorEvents_10_BeforeMaximizeEventHandler(InspectorWrapper_BeforeMaximize); ((Outlook.InspectorEvents_10_Event)Inspector).BeforeMinimize += new Microsoft.Office.Interop.Outlook.InspectorEvents_10_BeforeMinimizeEventHandler(InspectorWrapper_BeforeMinimize); ((Outlook.InspectorEvents_10_Event)Inspector).BeforeMove += new Microsoft.Office.Interop.Outlook.InspectorEvents_10_BeforeMoveEventHandler(InspectorWrapper_BeforeMove); ((Outlook.InspectorEvents_10_Event)Inspector).BeforeSize += new Microsoft.Office.Interop.Outlook.InspectorEvents_10_BeforeSizeEventHandler(InspectorWrapper_BeforeSize); ((Outlook.InspectorEvents_10_Event)Inspector).Close += new Microsoft.Office.Interop.Outlook.InspectorEvents_10_CloseEventHandler(InspectorWrapper_Close); ((Outlook.InspectorEvents_10_Event)Inspector).Deactivate += new Microsoft.Office.Interop.Outlook.InspectorEvents_10_DeactivateEventHandler(InspectorWrapper_Deactivate); //((Outlook.InspectorEvents_10_Event)Inspector).PageChange += new Microsoft.Office.Interop.Outlook.InspectorEvents_10_PageChangeEventHandler(InspectorWrapper_PageChange); } void DisconnectEvents() { ((Outlook.InspectorEvents_10_Event)Inspector).Activate -= new Microsoft.Office.Interop.Outlook.InspectorEvents_10_ActivateEventHandler(InspectorWrapper_Activate); ((Outlook.InspectorEvents_10_Event)Inspector).BeforeMaximize -= new Microsoft.Office.Interop.Outlook.InspectorEvents_10_BeforeMaximizeEventHandler(InspectorWrapper_BeforeMaximize); ((Outlook.InspectorEvents_10_Event)Inspector).BeforeMinimize -= new Microsoft.Office.Interop.Outlook.InspectorEvents_10_BeforeMinimizeEventHandler(InspectorWrapper_BeforeMinimize); ((Outlook.InspectorEvents_10_Event)Inspector).BeforeMove -= new Microsoft.Office.Interop.Outlook.InspectorEvents_10_BeforeMoveEventHandler(InspectorWrapper_BeforeMove); ((Outlook.InspectorEvents_10_Event)Inspector).BeforeSize -= new Microsoft.Office.Interop.Outlook.InspectorEvents_10_BeforeSizeEventHandler(InspectorWrapper_BeforeSize); ((Outlook.InspectorEvents_10_Event)Inspector).Close -= new Microsoft.Office.Interop.Outlook.InspectorEvents_10_CloseEventHandler(InspectorWrapper_Close); ((Outlook.InspectorEvents_10_Event)Inspector).Deactivate -= new Microsoft.Office.Interop.Outlook.InspectorEvents_10_DeactivateEventHandler(InspectorWrapper_Deactivate); //((Outlook.InspectorEvents_10_Event)Inspector).PageChange -= new Microsoft.Office.Interop.Outlook.InspectorEvents_10_PageChangeEventHandler(InspectorWrapper_PageChange); } void InspectorWrapper_Close() { DisconnectEvents(); Inspector = null; GC.Collect(); GC.WaitForPendingFinalizers(); OnClosed(); } //void InspectorWrapper_PageChange(ref string ActivePageName) //{ //} #region Resize / Move void InspectorWrapper_BeforeSize(ref bool Cancel) { } void InspectorWrapper_BeforeMove(ref bool Cancel) { } void InspectorWrapper_BeforeMinimize(ref bool Cancel) { } void InspectorWrapper_BeforeMaximize(ref bool Cancel) { } #endregion #region Activate / Deactivate void InspectorWrapper_Activate() { } void InspectorWrapper_Deactivate() { } #endregion } // ----------- end of InspectorWrapper.cs ---------------------------- #endregion }