Adding a Handler to .ItemAdd Outlook Event
My code:
Imports Microsoft.Office.Interop
Imports OpenQA.Selenium
Imports OpenQA.Selenium.Chrome
Imports System.Text
Imports System.Windows.Threading
Imports UiPath
Imports UiPath.Orchestrator.Extensibility
Imports System.IO
Imports System.Net.NetworkInformation
Imports EASendMail
Imports VB = Microsoft.VisualBasic
Class MainWindow
Private Sub Window_Loaded(sender As Object, e As RoutedEventArgs)
'Dim OutlookApp As New Outlook.Application
Dim OutlookApp As Outlook.Application = GetObject(, "Outlook.Application")
Dim Inbox = OutlookApp.GetNamespace("MAPI").GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox).Items
AddHandler Inbox.ItemAdd, AddressOf Inbox_ItemAdd
'Inbox.ItemAdd += New Outlook.ItemsEvents_ItemAddEventHandler(AddressOf Inbox_ItemAdd)
'This line does not work, but it works in the C# stack question for some reason
End Sub
Public Sub Inbox_ItemAdd(ByVal Item As Object)
Dim mail As Outlook.MailItem = CType(Item, Outlook.MailItem)
If Item IsNot Nothing Then
MsgBox("Received")
End If
End Sub
End Class
I tried both adding a handler from the .ItemAdd to my method called Inbox_ItemAdd and tried a solution from a different stackoverflow question like this: Inbox.ItemAdd += New Outlook.ItemsEvents_ItemAddEventHandler(AddressOf Inbox_ItemAdd).
I'm out of ideas.
The issue is that the Inbox_ItemAdd will not trigger even if I use the AddHandler.
Solution 1:
You should keep the object that raises the event alive by storing it in a field:
Class MainWindow
Dim Inbox As Outlook.Items
Private Sub Window_Loaded(sender As Object, e As RoutedEventArgs)
...
Inbox = OutlookApp.GetNamespace("MAPI").GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox).Items
AddHandler Inbox.ItemAdd, AddressOf Inbox_ItemAdd
End Sub
Public Sub Inbox_ItemAdd(ByVal Item As Object)
...
End Sub
End Class