257 lines
6.2 KiB
C#
257 lines
6.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using System.Reflection;
|
|
|
|
namespace LBOutlookLibrary
|
|
{
|
|
public abstract partial class LBComObject
|
|
{
|
|
private Object _Item;
|
|
internal Object Item
|
|
{
|
|
get { return _Item; }
|
|
set
|
|
{
|
|
_Item = value;
|
|
if (value != null) _MyType = _Item.GetType();
|
|
}
|
|
}
|
|
private Type _MyType;
|
|
public Type MyType
|
|
{
|
|
get { return _MyType; }
|
|
set { _MyType = value; }
|
|
}
|
|
protected LBComObject() { }
|
|
protected LBComObject(string ProgID)
|
|
{
|
|
Type objClassType;
|
|
objClassType = Type.GetTypeFromProgID(ProgID);
|
|
Item = Activator.CreateInstance(objClassType);
|
|
}
|
|
protected LBComObject(Object item)
|
|
{
|
|
Item = item;
|
|
}
|
|
private Object DoInvokeMember(string name, Object[] parameters, BindingFlags bf, Binder b)
|
|
{
|
|
try
|
|
{
|
|
return _MyType.InvokeMember(name, bf, b, _Item, parameters);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new Exception(string.Format("LBComObject.DoInvokeMember {0}.{1}", _MyType.Name, name), ex);
|
|
}
|
|
return null;
|
|
}
|
|
protected void SetProperty(string propertyName, params Object[] parameters)
|
|
{
|
|
DoInvokeMember(propertyName, parameters, BindingFlags.SetProperty, null);
|
|
}
|
|
protected Object GetProperty(string propertyName)
|
|
{
|
|
return DoInvokeMember(propertyName, null, BindingFlags.GetProperty, null);
|
|
}
|
|
protected Object GetProperty(string propertyName, params Object[] parameters)
|
|
{
|
|
return DoInvokeMember(propertyName, parameters, BindingFlags.GetProperty, null);
|
|
}
|
|
protected Object InvokeMethod(string methodName, params Object[] parameters)
|
|
{
|
|
if (parameters != null)
|
|
FixParameters(parameters);
|
|
return DoInvokeMember(methodName, parameters, BindingFlags.InvokeMethod, null);
|
|
}
|
|
private void FixParameters(object[] parameters)
|
|
{
|
|
// Loop through parameters checking to make sure that none of them are LBComObjects
|
|
for (int i = 0; i < parameters.Length; i++)
|
|
if (parameters[i] is LBComObject)
|
|
parameters[i] = (parameters[i] as LBComObject).Item;
|
|
}
|
|
protected Object InvokeMethod(string methodName)
|
|
{
|
|
return InvokeMethod(methodName, null);
|
|
}
|
|
}
|
|
public class LBComObjectList<TList, TItem> : LBComObject
|
|
where TList : LBComObjectList<TList, TItem>
|
|
where TItem : LBComObject, new()
|
|
{
|
|
//public new(Object item):base(item){}
|
|
public TItem Add()
|
|
{
|
|
TItem tmp = new TItem();
|
|
tmp.Item = InvokeMethod("Add");
|
|
return tmp;
|
|
}
|
|
//public TItem this[int item]
|
|
//{
|
|
// get
|
|
// {
|
|
// TItem tmp = new TItem();
|
|
// tmp.Item = GetProperty("Item", item);
|
|
// return tmp;
|
|
// }
|
|
//}
|
|
}
|
|
public partial class LBApplicationClass : LBComObject
|
|
{
|
|
public LBApplicationClass() : base("Outlook.Application") { }
|
|
public LBApplicationClass(Object item) : base(item) { }
|
|
public System.Object CreateItem(LBOlItemType ItemType)
|
|
{
|
|
return InvokeMethod("CreateItem", ItemType);
|
|
}
|
|
public void Quit()
|
|
{
|
|
InvokeMethod("Quit");
|
|
}
|
|
}
|
|
public enum LBOlItemType
|
|
{
|
|
olMailItem = 0,
|
|
olAppointmentItem = 1,
|
|
olContactItem = 2,
|
|
olTaskItem = 3,
|
|
olJournalItem = 4,
|
|
olNoteItem = 5,
|
|
olPostItem = 6,
|
|
olDistributionListItem = 7
|
|
}
|
|
public partial class LBMailItem : LBComObject
|
|
{
|
|
public LBMailItem() { }
|
|
public LBMailItem(Object item) : base(item) { }
|
|
}
|
|
public partial class LBMailItemClass : LBComObject
|
|
{
|
|
public LBMailItemClass() { }
|
|
public LBMailItemClass(Object item) : base(item) { }
|
|
public String Body
|
|
{
|
|
get { return (GetProperty("Body").ToString()); }
|
|
set { SetProperty("Body", value); }
|
|
}
|
|
public LBOlBodyFormat BodyFormat
|
|
{
|
|
get { return (LBOlBodyFormat)GetProperty("BodyFormat"); }
|
|
set { SetProperty("BodyFormat", value); }
|
|
}
|
|
public LBAttachments Attachments
|
|
{
|
|
get { return new LBAttachments(GetProperty("Attachments")); }
|
|
}
|
|
public String Subject
|
|
{
|
|
get { return (GetProperty("Subject").ToString()); }
|
|
set { SetProperty("Subject", value); }
|
|
}
|
|
public LBRecipients Recipients
|
|
{
|
|
get { return new LBRecipients(GetProperty("Recipients")); }
|
|
}
|
|
public String To
|
|
{
|
|
get { return (GetProperty("To").ToString()); }
|
|
set { SetProperty("To", value); }
|
|
}
|
|
public void Send()
|
|
{
|
|
InvokeMethod("Send");
|
|
}
|
|
}
|
|
public enum LBOlBodyFormat
|
|
{
|
|
olFormatUnspecified = 0,
|
|
olFormatPlain = 1,
|
|
olFormatHTML = 2,
|
|
olFormatRichText = 3
|
|
}
|
|
public partial class LBAttachments : LBComObject
|
|
{
|
|
public LBAttachments() { }
|
|
public LBAttachments(Object item) : base(item) { }
|
|
public int Count
|
|
{
|
|
get { return (GetProperty("Count") as int? ?? 0); }
|
|
}
|
|
public LBAttachment Item
|
|
{
|
|
get { return new LBAttachment(GetProperty("Item")); }
|
|
}
|
|
public LBAttachment Add(object Source)
|
|
{
|
|
return new LBAttachment(InvokeMethod("Add", Source, Missing.Value, Missing.Value, Missing.Value));
|
|
}
|
|
public LBAttachment Add(object Source, object Type, object Position, object DisplayName)
|
|
{
|
|
return new LBAttachment(InvokeMethod("Add", Source, Type, Position, DisplayName));
|
|
}
|
|
public void Remove(int Index)
|
|
{
|
|
InvokeMethod("Remove", Index);
|
|
}
|
|
}
|
|
public partial class LBRecipients : LBComObject
|
|
{
|
|
public LBRecipients() { }
|
|
public LBRecipients(Object item) : base(item) { }
|
|
public int Count
|
|
{
|
|
get { return (GetProperty("Count") as int? ?? 0); }
|
|
}
|
|
public LBRecipient Item
|
|
{
|
|
get { return new LBRecipient(GetProperty("Item")); }
|
|
}
|
|
public LBRecipient Add(string Name)
|
|
{
|
|
return new LBRecipient(InvokeMethod("Add", Name));
|
|
}
|
|
public void Remove(int Index)
|
|
{
|
|
InvokeMethod("Remove", Index);
|
|
}
|
|
public Boolean ResolveAll()
|
|
{
|
|
return InvokeMethod("ResolveAll") as Boolean? ?? false;
|
|
}
|
|
}
|
|
public partial class LBAttachment : LBComObject
|
|
{
|
|
public LBAttachment() { }
|
|
public LBAttachment(Object item) : base(item) { }
|
|
public LBOlAttachmentType Type
|
|
{
|
|
get { return (LBOlAttachmentType)GetProperty("Type"); }
|
|
}
|
|
}
|
|
public partial class LBRecipient : LBComObject
|
|
{
|
|
public LBRecipient() { }
|
|
public LBRecipient(Object item) : base(item) { }
|
|
public String Address
|
|
{
|
|
get { return (GetProperty("Address").ToString()); }
|
|
}
|
|
public String Name
|
|
{
|
|
get { return (GetProperty("Name").ToString()); }
|
|
}
|
|
public Boolean Resolve()
|
|
{
|
|
return InvokeMethod("Resolve") as Boolean? ?? false;
|
|
}
|
|
}
|
|
public enum LBOlAttachmentType
|
|
{
|
|
olByValue = 1,
|
|
olByReference = 4,
|
|
olEmbeddeditem = 5,
|
|
olOLE = 6
|
|
}
|
|
}
|