Share via


Adding an Event Registration for a Folder

Topic Last Modified: 2006-06-12

The following code creates a store item, sets its content class and schema, and saves it to the store. The store then processes the event registration. For more information, see Event Registration.

Example

Visual Basic

Example


'=============================================================================='
' This subroutine creates the event binding in the meta-database
' by setting properties in an event registration item and committing it to the
' store.  The event of saving the item triggers the event registration
' event sink, which processes the event registration and sets the registration
' to hidden so that it does not appear in the store folder.
'=============================================================================='
Sub AddNewStoreEvent(Server As String)
    On Error GoTo Errorhandler

    'heres a list of the properties you can set for the registration event item
    'not all of these are used in this example
    Const propcontentclass = "DAV: contentclass"

    Const propCriteria = "https://schemas.microsoft.com/exchange/events/Criteria"
    Const propEnabled = "https://schemas.microsoft.com/exchange/events/Enabled"
    Const propEventMethod = "https://schemas.microsoft.com/exchange/events/EventMethod"
    Const propMatchScope = "https://schemas.microsoft.com/exchange/events/MatchScope"
    Const propPriority = "https://schemas.microsoft.com/exchange/events/Priority"
    Const propScriptURL = "https://schemas.microsoft.com/exchange/events/ScriptUrl"
    Const propSinkClass = "https://schemas.microsoft.com/exchange/events/SinkClass"
    Const propTimerExpiryTime = "https://schemas.microsoft.com/exchange/events/TimerExpiryTime"
    Const propTimerInterval = "https://schemas.microsoft.com/exchange/events/TimerInterval"
    Const propTimerStartTime = "https://schemas.microsoft.com/exchange/events/TimerStartTime"

    Dim cn As New ADODB.Connection
    Dim rEvent As New ADODB.Record
    Dim strGuid
    Dim strBaseUrl
    Dim strEvent

    'This will serve as the scope as well
    '(Where you save it is where the event fires)
    strBaseUrl = "file://./backofficestorage/" + _
                 Server + _
                 "/public folders/internet newsgroups"

    strEvent = strBaseUrl + "/evtreg1" 'evtreg1 is the item name

    ' Create the connection
    cn.Provider = "exoledb.datasource"
    cn.ConnectionString = strBaseUrl
    cn.Open

    cn.BeginTrans
    rEvent.Open strEvent, cn, 3, 0     ' adModeReadWrite, adCreateNonCollection

    'set the properties in the item
    With rEvent.Fields
      .Item(propcontentclass) = "urn:content-class:storeeventreg"
      .Item(propEventMethod) = "onsave;ondelete" 'register for both save and delete events
      .Item(propSinkClass) = "VB_OutProc.sink"  'your registered event handler sink class ProgID

      'match scope
      .Item(propMatchScope) = "deep"
      .Item(propCriteria) = "WHERE $DAV:ishidden$ = FALSE"

      'Add custom properties which the event sink can use to
      'determine the context of this event registration

      Const customnamespace = "mycustomnamespace:eventsinks/notifyingevents/"
      Dim propname As String
      propname = customnamespace + "caseswitch"
      .Append propname, adInteger, , , 2         'for a case switch in the event sink
      propname = customnamespace + "notifygroup"
      .Append propname, adChar, , , "Marketing"  'a group you've created in exchange

      MsgBox "New Event Binding with custom properties created."

      .Update  'get the ADO object current

    End With
    cn.CommitTrans  'commit transaction to the store

    GoTo Ending

    Errorhandler:
       ' Implement custom error handling here.
       Debug.Print "Error: " + Str(Err.Number) + " " + Err.Description
       Err.Clear

    Ending:
       ' Clean up.
       cn.Close
       rEvent.Close

       Set cn = Nothing
       Set rEvent = Nothing

End Sub

During the process of adding an event registration for a folder, contextual information about this specific registration is also added. You can access this information from within the event sink. For more information, see Contextual Information in an Event Registration.