#include <stdio.h>
#include <tchar.h>
#import <cdo.dll> no_namespace
#import "c:\\Program Files\\Microsoft Office\\Office\\Addins\\esconf.dll" no_namespace
struct StartOle {
StartOle() {CoInitialize(NULL);}
~StartOle() {CoUninitialize(); }
} _inst_StartOle;
void dump_com_error(_com_error &e)
{
_tprintf(_T("Oops - hit an error!\n"));
_tprintf(_T("\a\tCode = %08lx\n"), e.Error());
_tprintf(_T("\a\tCode meaning = %s\n"), e.ErrorMessage());
_tprintf(_T("\a\tWcode = %08lx\n"), e.WCode());
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());
_tprintf(_T("\a\tSource = %s\n"), (LPCTSTR) bstrSource);
_tprintf(_T("\a\tDescription = %s\n"), (LPCTSTR) bstrDescription);
}
void main (void)
{
try {
// Setup MAPI session
_SessionPtr pSession("MAPI.Session");
pSession->Logon("YourProfileName");
// Setup Events object
IEventsPtr pEvents("MSExchange.Events");
pEvents->put_Session(pSession->GetMAPIOBJECT());
// Get pointer to Inbox
_variant_t vInbox(pSession->GetInbox());
// Get BoundFolder and associated Event Bindings
IBoundFolderPtr pBoundFolder(pEvents->GetBoundFolder(&vInbox, true));
IEventBindingsPtr pBindings(pBoundFolder->GetBindings());
// Create new event binding
IEventBindingPtr pBinding(pBindings->Add());
_bstr_t bstrName("TestBinding");
pBinding->PutName(bstrName);
pBinding->PutActive(true);
// EventMask: None = 0,
// ScheduledEvents = 1,
// NewItemEvents = 2,
// ChangedItemEvents = 4,
// DeletedItemEvents = 8,
// AllEvents = 65535
pBinding->PutEventMask(1); // ScheduledEvents
// The following is the proper class ID for events based on the
// standard Event Scripting Agent, if you are using a custom
// event handler, you should specify it's class ID here instead.
pBinding->PutHandlerClassID("{69E54151-B371-11D0-BCD9-00AA00C1AB1C}");
ISchedulePtr pSchedule(pBinding->GetSchedule());
// ScheduleType:
// ScheduleTypeUnknown = 0,
// ScheduleTypeHourly = 1,
// ScheduleTypeDaily = 2,
// ScheduleTypeWeekly = 3
pSchedule->put_Type((long)1); //Hourly
pSchedule->PutInterval((long)60); //60 minutes
pBinding->SaveChanges();
pBoundFolder->SaveChanges();
_tprintf("TestBinding installed\n");
pSession->Logoff();
}
catch (_com_error &e)
{
dump_com_error(e);
}
return;
}