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
 | |
| 	}
 | |
| }
 | 
