Hallo Zusammen,
ich versuche gerade in eine Windows Form mit einem Gridview die Outlook Kalenderobjekte einzulesen.
Dies mache ich analog einer Methode mit der ich erfolgreich die Kontakte ausgelesen habe.
Jedoch bekomme ich bei den MeetingItems Probleme:
Das COM-Objekt des Typs "System.__ComObject" kann nicht in den Schnittstellentyp "Microsoft.Office.Interop.Outlook.MeetingItem" umgewandelt werden. Dieser Vorgang konnte nicht durchgeführt werden, da der QueryInterface-Aufruf an die COM-Komponente für die Schnittstelle mit der IID "{00063062-0000-0000-C000-000000000046}" aufgrund des folgenden Fehlers nicht durchgeführt werden konnte: Schnittstelle nicht unterstützt (Ausnahme von HRESULT: 0x80004002 (E_NOINTERFACE)).
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.Office.Interop.Outlook;
namespace Outlook_TEST
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// Outlook Kontext herstellen
var outlookApplication = new ApplicationClass();
NameSpace mapiNamespace = outlookApplication.GetNamespace("MAPI");
#region Kalender
MAPIFolder meetings = mapiNamespace.GetDefaultFolder(OlDefaultFolders.olFolderCalendar);
DataTable dtg = new DataTable();
DataColumn dc;
dc = new DataColumn("Name", System.Type.GetType("System.String"));
dtg.Columns.Add(dc);
for (int i = 1; i < meetings.Items.Count + 1; i++)
{
var meetingItem = (MeetingItem)meetings.Items[i]; // DER FEHLER
DataRow dr = dtg.NewRow();
dr["Name"] = meetingItem.Subject;
dtg.Rows.Add(dr);
}
#endregion
#region Kontakte
//MAPIFolder contacts = mapiNamespace.GetDefaultFolder(OlDefaultFolders.olFolderContacts);
//DataTable dtg = new DataTable();
//DataColumn dc;
//// Spalten hinzufügen
//dc = new DataColumn("Name",System.Type.GetType("System.String"));
//dtg.Columns.Add(dc);
//dc = new DataColumn("Firma",System.Type.GetType("System.String"));
//dtg.Columns.Add(dc);
//dc = new DataColumn("Emailadresse",System.Type.GetType("System.String"));
//dtg.Columns.Add(dc);
//dc = new DataColumn("Mobil", System.Type.GetType("System.String"));
//dtg.Columns.Add(dc);
//// Reihen füllen
//for (int i = 1; i < contacts.Items.Count + 1; i++)
//{
// var contact = (ContactItem)contacts.Items[i];
// DataRow dr = dtg.NewRow();
// dr["Name"] = contact.FullName;
// dr["Firma"] = contact.CompanyName;
// dr["Emailadresse"] = contact.Email1Address;
// dr["Mobil"] = contact.MobileTelephoneNumber;
// dtg.Rows.Add(dr);
//}
#endregion
// Gridview befüllen
dataGridView1.DataSource=dtg;
dataGridView1.Refresh();
}
}
}
Habt ihr eine Idee warum dass nicht funktioniert oder wie man es besser machen kann?
Ich möchte erstmal die verschiedenen Ansätze zum auslesen der verschiedenen Outlook Objekte testen und später eine MCML Form im Windows Media Center erstellen um dort die Ergebnisse der Winform/Outlook-Tests darzustellen.
Vielen Dank schonmal für eure Unterstützung.
Viele Grüße
Azrael Masters
Ok konnte mir doch selber helfen, anscheinend habe ich die falschen Klassen verwendet.
Es ist nicht "MeetingItem" sondern "AppointmentItem".
I'm so sorry^^