Files
ayanova7/3rdprtylibs/OfficeXPPIA/OutlookWrapperClasses.cs
2018-06-29 19:47:36 +00:00

288 lines
13 KiB
C#

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
/// <summary>
/// Delegate signature to inform the application about closed objects.
/// </summary>
/// <param name="id">The unique ID of the closed object.</param>
public delegate void WrapperClosedDelegate(Guid id);
/// <summary>
/// The Wrapperclass itself has a unique ID and a closed event.
/// </summary>
internal abstract class WrapperClass
{
/// <summary>
/// The event ocures when the monitored item has been closed.
/// </summary>
public event WrapperClosedDelegate Closed;
/// <summary>
/// The unique ID of the wrapped object.
/// </summary>
public Guid Id { get; private set; }
protected void OnClosed()
{
if (Closed != null) Closed(Id);
}
/// <summary>
/// The constructor creates a new unique ID.
/// </summary>
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
}