I'm having the same problem too, I've developed a COM Add-In in VB and am tracing through all the events as I have the form linked to an Access table.
I did find a workaround, but I'm still debugging it, so I don't know if it's sound. This is the code that's in my Explorer's SelectionChange event:
Private Sub m_oExplorer_SelectionChange()
On Error Resume Next
Select Case True
Case Not m_bool_IsAFolderWithEventsIWantToTrack
Case Else
'Set m_oInspectors = m_oOutlook.Inspectors
Set m_oInspector = m_oOutlook.ActiveInspector
Set m_oContactItem = m_oOutlook.ActiveInspector.CurrentItem
Select Case True
Case m_oOutlook.ActiveExplorer.CurrentFolder.Items.Count = 0 _
And Not m_oContactItem Is Nothing
ContactDelete
Set m_oContactItem = Nothing
End Select
Select Case True
Case m_oOutlook.ActiveExplorer.Selection.Count > 0
Set m_oContactItem = m_oOutlook.ActiveExplorer.Selection(1)
End Select
End Select
End Sub
It's at the determination of the Items.Count = 0 and m_oContactItem Is Nothing, which is always triggered after the last contact in the PST file is deleted. This was the only method that I could figure out how to track when the last contact has "disappeared" without firing the event.
--
Thank You,
Robert L. Charlton, Jr.