Notice: This website is an unofficial Microsoft Knowledge Base (hereinafter KB) archive and is intended to provide a reliable access to deleted content from Microsoft KB. All KB articles are owned by Microsoft Corporation. Read full disclaimer for more details.

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


View products that this article applies to.

This article was previously published under Q248349

↑ Back to the top


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.

↑ Back to the top


More information

Sample Code

#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;
}
				
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.

↑ Back to the top


References

For more information on how to configure the appropriate permissions, please refer to the following Knowledge Base article:
180121� Agents Tab Is Missing from Folder Properties

↑ Back to the top


Keywords: KB248349, kbmsg, kbhowto

↑ Back to the top

Article Info
Article ID : 248349
Revision : 5
Created on : 6/29/2004
Published on : 6/29/2004
Exists online : False
Views : 415