288 lines
13 KiB
C#
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
|
|
|
|
|
|
|
|
}
|