Implementing an OnSave Event Sink
Implementing an OnSave Event Sink
This content is no longer actively maintained. It is provided as is, for anyone who may still be using these technologies, with no warranties or claims of accuracy with regard to the most recent product version or service release.
The following code receives the OnSave event and returns information about it. See Store Event Sink Bit Flags for more information.
Visual Basic
Private Sub IExStoreAsyncEvents_OnSave(ByVal pEventInfo As Exoledb.IExStoreEventInfo, ByVal bstrURLItem As String, ByVal lFlags As Long) Dim FSO As Object Dim EvtLog As String Dim EvtFile Dim ADODBRec As New ADODB.Record 'log file EvtLog = Environ("SystemDrive") & "\OnSave.log" 'Creates new log file %SystemDrive%\OnSave.log or opens it if exists Set FSO = CreateObject("Scripting.FileSystemObject") Set EvtFile = FSO.OpenTextFile(EvtLog, 8, True) 'Append incoming event info into log file EvtFile.WriteLine ("[VB Event Sink] OnSave()") EvtFile.WriteLine (" URL Item: " & bstrURLItem) EvtFile.WriteLine (" lFlags: " & "0x" & Hex(lFlags)) 'Small sample that shows how to use ADO Record Object and Fields inside events ADODBRec.Open bstrURLItem, , adModeRead, adFailIfNotExists If Err.Number <> 0 Then EvtFile.WriteLine "Failed to open Target URL: " & bstrURLItem & vbCrLf & "Error: " & Err.Description Else EvtFile.WriteLine (" DAV:Displayname Value: " & ADODBRec.Fields("DAV:displayname").Value) End If 'To determine cause of OnSyncSave 'Case 1: EVT_IS_DELIVERED If lFlags And EVT_IS_DELIVERED Then 'Perform your tasks 'OnSave for delivered mail item EvtFile.WriteLine (" Flag contains EVT_IS_DELIVERED bit set") 'Case 2: EVT_MOVE ElseIf lFlags And EVT_MOVE Then 'Perform your tasks 'OnSave for moved item EvtFile.WriteLine (" Flag contains EVT_MOVE bit set") 'Case 3: EVT_COPY ElseIf lFlags And EVT_COPY Then 'Perform your tasks 'OnSave for copied item EvtFile.WriteLine (" Flag contains EVT_COPY bit set") End If 'Check if it is a folder notification If lFlags And &H2 Then 'Perform your tasks 'OnSave for a folder EvtFile.WriteLine (" Flag contains EVT_IS_COLLECTION bit set") End If EvtFile.WriteBlankLines (1) 'Use the sink context (custom contextual info saved in the registration item) Dim case_switch As Integer Dim notify_group As String Const customnamespace = "mycustomnamespace:eventsinks/notifyingevents/" Dim propname As String propname = customnamespace + "caseswitch" case_switch = ADODBRec.Fields(propname) propname = customnamespace + "notifygroup" notify_group = ADODBRec.Fields(propname) 'Call some program here to use the custom data to notify people of an event 'Something like: handle_notifyevent(case_switch, notify_group) 'Before Quit EvtFile.Close Set FSO = Nothing End Sub
Send us your feedback about the Microsoft Exchange Server 2003 SDK.
This topic last updated: September 2004
Build: June 2007 (2007.618.1)
© 2003-2006 Microsoft Corporation. All rights reserved. Terms of use.