искам да покажа споделен календар. Търся в мрежата и намирам този код:
static void Main(string[] args)
{
Outlook.Application objOLApp;
Outlook.MAPIFolder objFolder;
Outlook.Explorer objExplorer;
Outlook.MAPIFolder objSubFolder;
Outlook.AppointmentItem objCalenderItem;
Outlook.Folders objOutlookFolders;
int intFolderCtr;
int intSubFolderCtr;
int intAppointmentCtr;
// >> Initialize The Base Objects
objOLApp = new Outlook.Application();
objOutlookFolders = objOLApp.Session.Folders;
// >> Loop Through The PST Files Added n Outlook
for (intFolderCtr = 1; intFolderCtr <= objOutlookFolders.Count; intFolderCtr++)
{
objFolder = objOutlookFolders[intFolderCtr];
objExplorer = objFolder.GetExplorer();
// >> Loop Through The Folders In The PST File
for (intSubFolderCtr = 1; intSubFolderCtr <= objExplorer.CurrentFolder.Folders.Count; intSubFolderCtr++)
{
objSubFolder = objExplorer.CurrentFolder.Folders[intSubFolderCtr];
// >> Check if Folder Contains Appointment Items
if (objSubFolder.DefaultItemType == Outlook.OlItemType.olAppointmentItem)
{
// >> Loop Through Appointment Items
for (intAppointmentCtr = 1; intAppointmentCtr <= objSubFolder.Items.Count; intAppointmentCtr++)
{
// >> Get Teh Calender Item From The Calender Folder
objCalenderItem = objSubFolder.Items[intAppointmentCtr];
// >> Process Appointment Item Accordingly
Console.WriteLine(objCalenderItem.Subject);
Console.WriteLine(objCalenderItem.Location + "," + objCalenderItem.Start.ToLongDateString());
Console.WriteLine();
Console.WriteLine();
}
}
}
}
// >> Close Application
// objOLApp.Quit();
// >> Release COM Object
System.Runtime.InteropServices.Marshal.ReleaseComObject(objOLApp);
objOLApp = null;
Console.ReadLine();
}
но виждам само моята среща.
искам да видя целия споделен календар. защото насрочих среща, но не знам дали другият е зает или свободен. така че как мога да покажа календара на друг?
редактиране:
промених тази линия
objOutlookFolders = objOLApp.Session.Folders;
с
objOutlookFolders = oNs.GetSharedDefaultFolder(oRep, OlDefaultFolders.olFolderCalendar).Folders;
и добавям това
NameSpace oNs = objOLApp.GetNamespace("MAPI");
Recipient oRep = oNs.CreateRecipient(objOLApp.Session.CurrentUser.Name);
но все още получавам грешката.
новата версия е
static void Main(string[] args)
{
Outlook.Application objOLApp;
Outlook.MAPIFolder objFolder;
Outlook.Explorer objExplorer;
Outlook.MAPIFolder objSubFolder;
Outlook.AppointmentItem objCalenderItem;
Outlook.Folders objOutlookFolders;
int intFolderCtr;
int intSubFolderCtr;
int intAppointmentCtr;
// >> Initialize The Base Objects
objOLApp = new Outlook.Application();
NameSpace oNs = objOLApp.GetNamespace("MAPI");
Recipient oRep = oNs.CreateRecipient(objOLApp.Session.CurrentUser.Name);
oRep.Resolve();
//if (oRep.Resolved)
objOutlookFolders = oNs.GetSharedDefaultFolder(oRep, OlDefaultFolders.olFolderCalendar).Folders;
//else
// objOutlookFolders = objOLApp.Session.Folders;
// >> Loop Through The PST Files Added n Outlook
for (intFolderCtr = 1; intFolderCtr <= objOutlookFolders.Count; intFolderCtr++)
{
objFolder = objOutlookFolders[intFolderCtr];
objExplorer = objFolder.GetExplorer();
// >> Loop Through The Folders In The PST File
for (intSubFolderCtr = 1; intSubFolderCtr <= objExplorer.CurrentFolder.Folders.Count; intSubFolderCtr++)
{
objSubFolder = objExplorer.CurrentFolder.Folders[intSubFolderCtr];
// >> Check if Folder Contains Appointment Items
if (objSubFolder.DefaultItemType == Outlook.OlItemType.olAppointmentItem)
{
// >> Loop Through Appointment Items
for (intAppointmentCtr = 1; intAppointmentCtr <= objSubFolder.Items.Count; intAppointmentCtr++)
{
// >> Get Teh Calender Item From The Calender Folder
objCalenderItem = objSubFolder.Items[intAppointmentCtr];
// >> Process Appointment Item Accordingly
Console.WriteLine(objCalenderItem.Subject);
Console.WriteLine(objCalenderItem.Location + "," + objCalenderItem.Start.ToLongDateString());
Console.WriteLine();
Console.WriteLine();
}
}
}
}
// >> Close Application
// objOLApp.Quit();
// >> Release COM Object
System.Runtime.InteropServices.Marshal.ReleaseComObject(objOLApp);
objOLApp = null;
Console.ReadLine();
}
моля помогнете ми.. още работя. но не стана.