Microsoft KB Archive/248349

= How To Bind an Agent to an Exchange Server Mailbox Folder with VC++ =

Article ID: 248349

Article Last Modified on 6/29/2004

-

APPLIES TO


 * Microsoft Exchange Server 5.5 Standard Edition
 * Microsoft Collaboration Data Objects 1.21

-



This article was previously published under Q248349



SUMMARY
This article contains a Microsoft Visual C++ code sample that demonstrates how to bind an agent to an Inbox using Collaboration Data Objects (CDO) and ESCONF libraries. The article assumes that the Inbox folder is located on an Exchange Server 5.5 computer.



Sample Code

 * 1) include 
 * 2) include 


 * 1) import  no_namespace
 * 2) 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; } Please note that to bind an agent to Exchange Server Mailbox Folder, you must have at least Author permissions on the EventConfig_servername object in the Exchange Server directory.

