Prüfen, ob OL verfügbar ist
Hallo,
mit meinem vb.net-Programm starte ich Outlook (2010) und überwache ein Postfach/einen öffentlichen Ordner auf neu eingehende E-Mails.
Outlook wird gestartet hiermit:
Auf neue E-Mails überwache ich den Ordner "strFolderToMonitor" mit
in Zusammenwirken mit
Das vb.net-Programm ist vorgesehen, um ununterbrochen zu laufen.
Jetzt tritt das Problem auf, dass Outlook gelegentlich zwar läuft, aber nicht drauf zugegriffen werden kann, z.B. wenn OL vergebens versucht, auf den Exchange-Server zuzugreifen. Daraus resultiert dann der Effekt, dass, auch wenn OL dann wieder verfügbar ist, das ItemAdd-Event nicht ausgelöst wird, auch wenn neue E-Mails eingehen.
Wie könnte ich diesem Problem Abhilfe schaffen? Kann man OL auf Verfügbarkeit hin überprüfen? Wenn ja, wie?
Neugierige Grüße,
Andreas
mit meinem vb.net-Programm starte ich Outlook (2010) und überwache ein Postfach/einen öffentlichen Ordner auf neu eingehende E-Mails.
Outlook wird gestartet hiermit:
1
Process.Start("outlook.exe", "/select ""outlook:" & strFolderToMonitor & "")
Auf neue E-Mails überwache ich den Ordner "strFolderToMonitor" mit
1
Public WithEvents olInboxItems As Microsoft.Office.Interop.Outlook.Items
1
2
3
2
3
Public Sub olInboxItems_ItemAdd(ByVal Item As Object) Handles olInboxItems.ItemAdd
...
End Sub
Das vb.net-Programm ist vorgesehen, um ununterbrochen zu laufen.
Jetzt tritt das Problem auf, dass Outlook gelegentlich zwar läuft, aber nicht drauf zugegriffen werden kann, z.B. wenn OL vergebens versucht, auf den Exchange-Server zuzugreifen. Daraus resultiert dann der Effekt, dass, auch wenn OL dann wieder verfügbar ist, das ItemAdd-Event nicht ausgelöst wird, auch wenn neue E-Mails eingehen.
Wie könnte ich diesem Problem Abhilfe schaffen? Kann man OL auf Verfügbarkeit hin überprüfen? Wenn ja, wie?
Neugierige Grüße,
Andreas
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 270427
Url: https://administrator.de/forum/pruefen-ob-ol-verfuegbar-ist-270427.html
Ausgedruckt am: 06.04.2025 um 21:04 Uhr
4 Kommentare
Neuester Kommentar

z.B. diese Eigenschaft vor dem Erstellen der Eventhandler prüfen, und erst bei Erfolg den Eventhandler dynamisch im Code zuweisen.
https://msdn.microsoft.com/DE-DE/library/office/ff869001.aspx
Gruß jodel32
https://msdn.microsoft.com/DE-DE/library/office/ff869001.aspx
Gruß jodel32

So aus der Lameng könnte man das etwa so machen.(ohne Gewähr)
Gruß jodel32
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Public Class Form1
Dim timer As New Timer
Dim olApp As New Microsoft.Office.Interop.Outlook.Application
Dim items As Microsoft.Office.Interop.Outlook.Items
Dim isOffline As Boolean
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
With timer
' Timer Interval (ms)
.Interval = 2000
' Eventhandler dem Timer zuweisen
AddHandler .Tick, AddressOf timer_tick
'Timer ist an
.Enabled = True
End With
'Items zuweisen
items = olApp.Session.Stores("user@domain.com").GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox).Items
'Eventhandler der Inbox
AddHandler items.ItemAdd, AddressOf inbox_itemadd
'Timer starten
timer.Start()
End Sub
Private Sub timer_tick(sender As Object, e As System.EventArgs)
'prüfe ob Session Offline wenn ja setze Variable
If olApp.Session.Offline Then
isOffline = True
Else ' Outlook nicht mehr offline
If isOffline Then 'wenn Outlook vorher offline war setze erneut den Eventhandler
RemoveHandler items.ItemAdd, AddressOf inbox_itemadd
AddHandler items.ItemAdd, AddressOf inbox_itemadd
isOffline = False
End If
End If
End Sub
Private Sub inbox_itemadd(ByVal Item As Object)
MsgBox("Neue Mail")
End Sub
End Class